MONGO 导出 -q 带有日期函数的问题



mongoexport -h "hostname" -u "username" -p password -d "dbname" -c "collection" -q '{"REQUEST_TIMESTAMP": "{$gt:new Date(ISODate().getTime() - 1000 * 60 * 60)}" }' -o output.json

我想使用 mongoshell

获取过去 1 小时的记录,上面的日期函数在 mongodb 中完美运行,但在 mongoshell 中则不然。

你能解释一下如何在最后一小时使用纪元格式吗,它应该是动态的而不是哈编码

假设我们有以下数据:

> db.test.find()
{ "_id" : ObjectId("59f45e259ea74673bf2e80fe"), "d" : ISODate("2016-10-28T10:00:00Z") }
{ "_id" : ObjectId("59f45e289ea74673bf2e80ff"), "d" : ISODate("2016-11-28T10:00:00Z") }
{ "_id" : ObjectId("59f45e2d9ea74673bf2e8100"), "d" : ISODate("2016-12-28T10:00:00Z") }
{ "_id" : ObjectId("59f45e319ea74673bf2e8101"), "d" : ISODate("2017-12-28T10:00:00Z") }
{ "_id" : ObjectId("59f45e379ea74673bf2e8102"), "d" : ISODate("2018-12-28T10:00:00Z") }
{ "_id" : ObjectId("59f45e3a9ea74673bf2e8103"), "d" : ISODate("2018-12-28T11:00:00Z") }
{ "_id" : ObjectId("59f45e3d9ea74673bf2e8104"), "d" : ISODate("2018-12-28T12:00:00Z") }

我们可以使用与您类似的查询导出它,但从 bash 添加日期

$ date
28 Oct 2017 12:01:21
$ d=$(date -d '1 hour ago' +%s%N | cut -b1-13)
$ ./mongoexport -d "test" -c "test" -q '{"d": {$gt: new Date('$d') }}' -o output.json

然后,如果我们看一下输出:

$ cat output.json
{"_id":{"$oid":"59f45e319ea74673bf2e8101"},"d":{"$date":"2017-12-28T10:00:00.000Z"}}
{"_id":{"$oid":"59f45e379ea74673bf2e8102"},"d":{"$date":"2018-12-28T10:00:00.000Z"}}
{"_id":{"$oid":"59f45e3a9ea74673bf2e8103"},"d":{"$date":"2018-12-28T11:00:00.000Z"}}
{"_id":{"$oid":"59f45e3d9ea74673bf2e8104"},"d":{"$date":"2018-12-28T12:00:00.000Z"}}

最新更新