gpt4 book ai didi

mongodb - mongodump - 时间戳字段的范围查询引发失败的解析错误

转载 作者:IT老高 更新时间:2023-10-28 13:32:07 27 4
gpt4 key购买 nike

以下是文档的结构:

{
"_id" : ObjectId("4fccd39c9d8597a034d183b1"),
"image" : "23ef514f8201320c2d7253e4bf28edf6",
"owner" : "1b8c335c902ac4ab128ee8ed773bee04",
"pageviews" : 57,
"source" : "b1b3849b472edada1b922c786df5b46f",
"timestamp" : ISODate("2012-06-04T00:00:00Z")
}

我正在执行以下 mongodump 查询来转储所有 timestamp 大于 2013 年 11 月 1 日的文档:

mongodump -d dbname -c coll_name -q "{source: "7e04f65e47ed3ddfeb21716a247e3fa6", timestamp: {\$gte: new Date(2013, 10, 1)}}"

它显示:

assertion: 16619 code FailedToParse: FailedToParse: Expecting '}' or ',': offset:13

即使相同的查询对象(除了用于转义 $gte 的反斜杠)在 mongo shell 中也可以正常工作。我做错了什么?

附: MongoDB的版本是2.4.6

最佳答案

您的嵌套引号有问题:

mongodump -d dbname -c coll_name -q "{source: "7e04f65e47ed3ddfeb21716a247e3fa6", timestamp: {\$gte: new Date(2013, 10, 1)}}"
# ----------------------------------^---------^

我会在外面使用单引号:

mongodump -d dbname -c coll_name -q '{source: "7e04f65e47ed3ddfeb21716a247e3fa6", timestamp: {$gte: new Date(2013, 10, 1)}}'

这也可以让您避免转义 $gte也。如果它不喜欢 new Date那么你可以使用:

{$gte: new Date(1383264000000)}

对于后人来说,似乎 -q解析器不喜欢 Date 的三参数形式构造函数也不喜欢 ISODate MongoDB 通常用于日期和时间戳的函数。我得到了令人困惑的断言失败,例如:

Assertion: 10340:Failure parsing JSON string near: timestamp

当我尝试其中任何一个时。这让我很困惑,但有时最好在找到可行的解决方案后安静地走开。

关于mongodb - mongodump - 时间戳字段的范围查询引发失败的解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19805738/

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