Mongoexport -q ISODate查询

时间:2014-12-21 16:03:08

标签: mongodb isodate

我试图运行这个:

mongoexport.exe -h *MYHOST* -p *MYPORT* -q "{'time':{'$gte': ISODate('2014-12-21 12:57:00.506Z'),'$lt': ISODate('2014-12-21 12:59:00.506Z')}}"

或者这个(gte& lt without - '):

mongoexport.exe -h *MYHOST* -p *MYPORT* -q {'time':{$gte: ISODate('2014-12-21 12:57:00.506Z'),$lt: ISODate('2014-12-21 12:59:00.506Z')}}

查询在Robomongo上运行正常,但是使用mongoexport会抛出:"位置参数太多"

我知道我可以运行以下代码,但每次我需要执行查询时,我都不想使用日期转换器。

mongoexport.exe -h *MYHOST* -p *MYPORT* -q "{'time':{$gte: new Date(14191
66620506),$lt: new Date(1419166740506)}}"

4 个答案:

答案 0 :(得分:12)

mongoexport查询需要使用严格模式的MongoDB扩展JSON。您可以在extended JSON上的MongoDB手册文章中阅读有关扩展JSON的更多内容。在您的特定情况下,在mongoexport命令中编写第一个查询的正确方法是

mongoexport.exe -h *MYHOST* -p *MYPORT* -q "{ 'time' : { '$gte' : { '$date' : '2014-12-21 12:57:00.506Z' },'$lt' : { '$date' : '2014-12-21 12:59:00.506Z' } } }"

答案 1 :(得分:6)

我使用@ wdberkeley的答案作为起点,但该特定的日期字符串对我不起作用。我不得不使用' T'分开日期和时间:

mongoexport --username user --password pass --host host --db dbName --collection coll --type=csv --query '{"_created_at": { "$gte" : { "$date" : "2017-12-21T12:57:00.506Z" } }}'

答案 2 :(得分:0)

不得不在Windows中使用其他语法。

mongoexport-主机192.168.1.5 --db dbname-收集文件--query“ {” ModifyDate“:{” $ lte“:{” $ date“:'2019-02-17T00:00:00.000Z '}}}“

差异是日期周围的单引号。

答案 3 :(得分:0)

我在mongo 2.4上遇到了同样的问题,您需要使用$ date  “一个64位带符号的整数,以毫秒为单位”(https://docs.mongodb.com/v2.4/reference/mongodb-extended-json/) 您的情况:

mongoexport.exe -h *MYHOST* -p *MYPORT* -q "{'time':{'$gte':{"$date": 1419166620506},'$lt': {"$date": 1419166740506}}"