尝试将查询与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: [ {但是在mongoexport中预先在Date中做乘法:
mongoexport -d event -c listing -q '{"created_at":new Date(1221029382000)}'成功了!
为什么mongo在这两个上下文中对查询的评估是不同的?
发布于 2012-08-05 16:20:52
mongoexport命令行实用程序支持以格式传递查询,但您正在尝试在查询中计算。
JSON格式最初是从JavaScript的对象表示法派生出来的,但是可以解析JSON文档的内容,而不需要在JavaScript解释器中对其进行eval()。
您应该认为JSON代表“结构化数据”,而JavaScript代表“可执行代码”。因此,实际上,您正在运行的查询有两个不同的上下文。
mongo命令行实用程序是一个interactive JavaScript shell,它包括一个JavaScript解释器以及一些用于处理MongoDB的辅助函数。虽然JavaScript对象格式看起来类似于JSON,但您也可以使用JavaScript对象、函数调用和操作符。
您的1221029382*1000示例是一个数学运算的结果,如果您在JSON中运行该运算,JavaScript解释器将执行该运算;在mongo中,对于新日期,它是一个无效值,因此mongoexport将退出,并返回“解析JSON字符串失败”错误。
发布于 2013-03-30 00:18:12
我在执行mongoexport时也遇到了这个错误,但原因不同。不过,我会在这里分享我的解决方案,因为我在试图解决我的问题时,最终来到了这个SO页面。
我知道这和这个问题没有什么关系,但是这篇文章的标题在Google中提到了这个问题,所以既然我得到了完全相同的错误,我将添加一个答案。希望这能帮助到某个人。
我正尝试在Windows控制台中执行MongoId _id查询。问题是我需要用双引号括起JSON查询,并且ObjectId也必须用双引号括起来(而不是单引号!)。所以我不得不避开ObjectId的引号。
mongoexport -u用户名-pPASSWORD -d数据库-c集合--查询"{_id : ObjectId(\"5148894d98981be01e000011\")}“
如果在Windows上将JSON查询括在单引号中,则会出现以下错误:
ERROR: too many positional options如果我在ObjectId两边使用了单引号,我会得到这样的错误:
Assertion: 10340:Failure parsing JSON string near: _id所以,是的。祝好运。
https://stackoverflow.com/questions/8098191
复制相似问题