bash - mongoexport 最近小时数来自 mongodb 的数据

标签 bash mongodb date csv

我是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/

相关文章:

mongodb - 如何使 MongoDB Upsert 真正幂等?

mongodb - everyauth,第一次登录有效,第二次失败

java - Calendar#add(Calendar.MONTH, months) 和 LocalDate#plusMonth(months) 之间有什么不同的行为吗?

linux - Linux 与 Windows 中的 WMIC 差异

linux - if 语句的计算结果始终为 TRUE

mongodb - macOS 大苏尔 -> 11.1? dyld : Library not loaded:/usr/local/opt/openssl/lib/libssl. 1.0.0.dylib

python - 为什么我在 matplotlib 的 x 轴上得到垃圾日期值?

javascript - 如何使用 javascript 将 yyyy-mm-dd 转换为 dd-Mon-yyyy(带有月份名称)

linux - 在 bash 中从文件中读取并执行带空格的行

bash - DST 破坏了 bash 脚本,如何设置变量的本地时间?