如何转储给定日期的数据

Mar*_*ill 5 mongodb

我使用mongoexport导出给定日期的数据..我的命令就是这个

mongoexport -d project -c coll  --csv -o result -f source -q '{"date":{"$gte":"new Date(2011,1,25)","lt":"new Date(2011,2,26)"}}'
Run Code Online (Sandbox Code Playgroud)

但它不是导出结果...我在数据库中存储了25-feb-2011和26-feb-2011的数据.我如何查询日期?

Wae*_*ada 5

我有同样的问题..我通过使用纪元时间修复它..

你可以在这里查看 http://www.epochconverter.com/

我正在使用java ..所以我用过

日期x =新日期(年,月,日)

并使用x.getTime()获取纪元并将其发送到mongoexport

所以你的mongo出口声明将是

mongoexport -d project -c coll --csv -o result -f source -q'{"date":{$ gte:(Date(1295913600)),$ lt:(Date(1298678400)}}'


Ada*_*Dev 2

我认为问题在于您指定日期的方式。

首先,我认为不应该new Date(....)用引号引起来(会被视为字符串文字而不是日期?)。

其次,看起来 newDate(Y,M,D)不能在这里使用来指定日期 - 这给了我以下错误:

断言:10340:解析附近的 JSON 字符串失败...

我认为你需要用数字指定日期。
例如
new Date(1234567890)

所以整个事情会是这样的:

mongoexport -d project -c coll  --csv -o result -f source -q '{"date":{"$gte":new Date(x)","$lt":new Date(y)}}'
Run Code Online (Sandbox Code Playgroud)

其中 x = 开始日期的数字表示形式,y = 结束日期。另外,如已经指出的那样,为“lt”添加了缺失的“$”。

更新:
回复:如何找到数字表示。不得不在 mongo shell 中尝试一下,因为我自己对此还比较陌生。这是我通过 mongo shell 获取号码的示例(例如 2 月 25 日:

> new Date(2009,1,25) * 1
Run Code Online (Sandbox Code Playgroud)

这使:

1235520000000

再次在 shell 中,如果您执行以下操作:

> new Date(1235520000000)
Run Code Online (Sandbox Code Playgroud)

它将确认这是正确的日期:

ISODate("2009-02-25T00:00:00Z")
Run Code Online (Sandbox Code Playgroud)