当前位置:  开发笔记 > 编程语言 > 正文

mongoexport JSON解析错误

如何解决《mongoexportJSON解析错误》经验,为你挑选了1个好方法。

尝试使用mongoexport查询会导致错误.但是同样的查询由mongo-client评估而没有错误.

在mongo-client中:

db.listing.find({"created_at":new Date(1221029382*1000)})

使用mongoexport:

mongoexport -d event -c listing -q '{"created_at":new Date(1221029382*1000)}'

生成的错误:

Fri Nov 11 17:44:08 Assertion: 10340:Failure parsing JSON string near: 
$and: [ { 
0x584102 0x528454 0x5287ce 0xa94ad1 0xa8e2ed 0xa92282 0x7fbd056a61c4 
0x4fca29 
mongoexport(_ZN5mongo11msgassertedEiPKc+0x112) [0x584102] 
mongoexport(_ZN5mongo8fromjsonEPKcPi+0x444) [0x528454] 
mongoexport(_ZN5mongo8fromjsonERKSs+0xe) [0x5287ce] 
mongoexport(_ZN6Export3runEv+0x7b1) [0xa94ad1] 
mongoexport(_ZN5mongo4Tool4mainEiPPc+0x169d) [0xa8e2ed] 
mongoexport(main+0x32) [0xa92282] 
/lib/libc.so.6(__libc_start_main+0xf4) [0x7fbd056a61c4] 
mongoexport(__gxx_personality_v0+0x3d9) [0x4fca29] 
assertion: 10340 Failure parsing JSON string near: $and: [ {

但是Date事先在mongoexport中进行乘法运算:

mongoexport -d event -c listing -q '{"created_at":new Date(1221029382000)}'

作品!

为什么mongo在这两个上下文中以不同的方式评估查询?



1> Stennie..:

mongoexport命令行实用程序支持传递查询JSON格式,但您要评估的JavaScript在您的查询.

JSON格式最初源自JavaScript的对象表示法,但JSON文档的内容可以在不eval()使用JavaScript解释器的情况下进行解析.

您应该将JSON视为表示" 结构化数据 ",将JavaScript视为" 可执行代码 ".事实上,对于您正在运行的查询,有两种不同的上下文.

mongo命令行实用程序是一个交互式的JavaScript壳,其包括JavaScript解释器以及用于与MongoDB的工作一些辅助功能.虽然JavaScript对象格式与JSON类似,但您也可以使用JavaScript对象,函数调用和运算符.

你的例子1221029382*1000是数学运算的结果,如果你在mongoshell中运行它,它将由JavaScript解释器执行; 在JSON中,它是新Date的无效值,因此mongoexport以"解析JSON字符串失败"错误退出.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有