我是mongodb的新手。我想从我的数据库中导出最近几个小时的一些数据。所以,我想我需要编写 mongoexport 命令并在 --query
选项中包含日期范围。
我写了一个这样的 bash 文件并尝试运行它:
#!/bin/bash
mongoexport --host localhost:27017 --db copy --collection txt --csv --fields x1,x2,x3...,date --query '{ "date" : {$gt:new Date(new Date() - 1000*60*60*3)} }' --out home/data.csv
但我得到的结果是:
connected to: localhost:27017
assertion: 16619 code FailedToParse: FailedToParse: Expecting '}' or ',': offset:25 of:{ "date" : {$gt:new Date(new Date() - 1000*60*60*3)} }
它看到连接到 localhost 但无法输出数据。如果我删除 --query
选项,这可以成功运行并获取整个数据,但我必须需要查询来对最近 3 小时内的数据进行子集化。
我们将不胜感激任何想法和帮助。谢谢你,最好的。
最佳答案
使用 mongoexport,您必须为 Date 对象提供时间戳。
这里有一个解释:MongoDb timestamp
你可以写成脚本是这样的(我对 bash 相当生疏,当然可以改进以保持在单行上):
timestamp=$(date +%s)
let total=$timestamp*1000-3600*1000*3
mongoexport --host localhost:27017 --db copy --collection txt --csv --fields x1,x2,x3...,date --query '{ "date" : {$gt:new Date('$total')} }' --out home/data.csv
关于bash - mongoexport 最近小时数来自 mongodb 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30200179/