首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongoexport JSON解析错误

mongoexport JSON解析错误
EN

Stack Overflow用户
提问于 2011-11-12 02:15:11
回答 2查看 7K关注 0票数 3

尝试将查询与mongoexport一起使用会导致错误。但是同样的查询由mongo-client计算,没有错误。

在mongo-client中:

代码语言:javascript
复制
db.listing.find({"created_at":new Date(1221029382*1000)})

使用mongoexport:

代码语言:javascript
复制
mongoexport -d event -c listing -q '{"created_at":new Date(1221029382*1000)}'

生成的错误:

代码语言:javascript
复制
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中做乘法:

代码语言:javascript
复制
mongoexport -d event -c listing -q '{"created_at":new Date(1221029382000)}'

成功了!

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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字符串失败”错误。

票数 8
EN

Stack Overflow用户

发布于 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查询括在单引号中,则会出现以下错误:

代码语言:javascript
复制
ERROR: too many positional options

如果我在ObjectId两边使用了单引号,我会得到这样的错误:

代码语言:javascript
复制
Assertion: 10340:Failure parsing JSON string near: _id

所以,是的。祝好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8098191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档