我是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,您必须为日期对象提供时间戳。
这里回答了一个解释: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