我正在尝试从Mongodb导出数据,其中日期以ISO格式存储。 例如 -
{
"_id" : "abcdef",
"log" : [
{
"ts" : ISODate("2015-05-14T17:21:51Z"),
"visitorId" : NumberLong(219301285)
},
{
"ts" : ISODate("2015-05-15T19:20:52Z")
}
],
"uts" : ISODate("2015-05-14T17:21:50.589Z")
}
当我将导出命令写为
时mongoexport --host localhost:27018 --db mydb --collection mycoll --query '{"log.ts":{$gte :new Date(1431619200000)}}'
--out test_1.json
它以JSON格式提供结果,但日期格式为数字
{
"_id": "abcdef",
"log": [
{
"ts": {
"$date": 1431624111000
},
"visitorId": 219301285
},
{
"ts": {
"$date": 1431667764000
},
"visitorId": 0
}
],
"uts": {
"$date": 1431624110589
}
}
我想要的是日期应该是ISO格式而不是数字。
我该怎么做?
我尝试使用以下格式,但它不起作用并提供错误
mongoexport --host localhost:27018 --db mydb --collection mycoll --query "{'log.ts':{'$gte' :{'$date':'2015-05-15 10:00:00.000Z'}}}" --out test_1.json
答案 0 :(得分:2)
mongoexport
生成strict mode JSON作为输出。使用该格式,日期表示为{ "$date": "<date>" }
,但<date>
的表示在MongoDB版本中不均匀:
<date>
是一种ISO-8601日期格式,在模板{{1}后面有一个强制性时区字段}“。 如果您想直接从YYYY-MM-DDTHH:mm:ss.mmm<+/-Offset>
获得“新”ISO日期表示,则必须至少更新到MongoDB 2.6。否则你会有:
它们都不是长期解决方案,因为我自己会强烈推动更新MongoDB(最多为&gt; = 3.0)。但正如您所理解的那样,这可能会导致一些兼容性问题。所以YMMV。
答案 1 :(得分:0)
我用以下查询解决了mongo 2.6.12:
mongoexport --username blabla --password --db bmv4 --collection appointment --query'{created:{$ gte:new Date(1472680800000)}},$或:[{action:“CREA”}, {action:“CREV”},{action:“MOVE”},{action:“DELETE”},{action:“FREE”}]}' - out bmv4Appointments.json
我找到了解决方案here
答案 2 :(得分:-1)
ISODate是此处使用的格式。
mongoexport --host localhost:27018 --db mydb --collection mycoll --query
'{"log.ts":{$gte: ISODate("2015-01-20T15:00:00Z")}}' --out test_1.json
这是未经测试的代码,但类似的内容对我有用。