我使用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的数据.我如何查询日期?
我有同样的问题..我通过使用纪元时间修复它..
你可以在这里查看 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)}}'
我认为问题在于您指定日期的方式。
首先,我认为不应该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)
| 归档时间: |
|
| 查看次数: |
7972 次 |
| 最近记录: |