mongo export -q 日期函数问题[重复]

Posted

技术标签:

【中文标题】mongo export -q 日期函数问题[重复]【英文标题】:mongo export -q issue with date function [duplicate] 【发布时间】:2017-10-28 10:23:53 【问题描述】:

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 中无法正常运行。

你能解释一下过去一小时如何使用 epoch 格式吗,它应该是动态的而不是硬编码的

【问题讨论】:

【参考方案1】:

假设我们有以下数据:

> 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"

【讨论】:

没问题,请采纳答案:-) 接受老板。你摇滚!

以上是关于mongo export -q 日期函数问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章

你如何从 Mongo 日期字段中获取 DayHours?

在 ES6 中使用 module.exports 导出多个函数

在MongoDB中存储转换日期[重复]

mongo export SyntaxError:missing;在声明@(shell)之前:1:14

【mongo】mongoDB export/import数据导出和导入

如何等待module.export函数完成请求,然后再将其返回值分配给不同JS文件中的变量[重复]