Mongoexport -q ISODate查询

use*_*r_s 8 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')}}"
Run Code Online (Sandbox Code Playgroud)

或者这个(gte< 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')}}
Run Code Online (Sandbox Code Playgroud)

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

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

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

wdb*_*ley 14

mongoexport查询需要使用严格模式的MongoDB扩展JSON.您可以在有关扩展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' } } }"
Run Code Online (Sandbox Code Playgroud)

  • 在Mac上我无法让它工作.我不得不使用:`mongoexport -d myDb -c myCollection -q'{"timestamp":{"$ gte":{"$ date":"2015-11-01T12:57:00.000Z"}}}'`*注意*:双引号*必须是*在字符串内部,外面有单引号. (6认同)

tod*_*ddg 7

我用@ 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" } }}'
Run Code Online (Sandbox Code Playgroud)