gpt4 book ai didi

json - mongoexport JSON 解析错误

转载 作者:可可西里 更新时间:2023-11-01 09:21:07 34 4
gpt4 key购买 nike

尝试使用带有 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 在这两种情况下以不同的方式评估查询?

最佳答案

mongoexport 命令行实用程序支持在 JSON 中传递查询 格式,但您正在尝试评估 JavaScript 在您的查询中。

JSON 格式最初源自 JavaScript 的对象表示法,但无需在 JavaScript 解释器中使用 eval() 即可解析 JSON 文档的内容。

您应该将 JSON 视为表示“结构化数据”,将 JavaScript 视为“可执行代码”。因此,实际上,您正在运行的查询有两个不同的上下文。

mongo 命令行实用程序是一个 interactive JavaScript shell其中包括一个 JavaScript 解释器以及一些用于使用 MongoDB 的辅助函数。虽然 JavaScript 对象格式看起来类似于 JSON,但您也可以使用 JavaScript 对象、函数调用和运算符。

1221029382*1000 示例是数学运算的结果,如果您在 mongo shell 中运行它,JavaScript 解释器将执行该运算;在 JSON 中,它是新日期的无效值,因此 mongoexport 退出时出现“解析 JSON 字符串失败”错误。

关于json - mongoexport JSON 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8098191/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com