【发布时间】:2023-03-09 16:50:01
【问题描述】:
下面的脚本应该从 mongo 返回我想要的值的 CSV,返回我想要的所有数据,但是两个项目的格式不同,并且尝试我可能无法仅获取值。
问题 1: 第一个返回的项目“$_id”,返回 ObjectId("5a4b7775d9cc09000185b908") 但我只想获取值 5a4b7775d9cc09000185b908。每次我尝试解析它或使用 valueOf 时,它都会返回一个空白值。
问题 2: 我要求的第四项应该是使用两个日期值 {$subtract: [ "$finished", "$started" 的时间格式] }(开始和结束时间)。我得到的是 NumberLong(5844) 这应该只是 milisenconds。
脚本
var cur=db.submissions.aggregate(
[
{$match: { started: {'$gte': ISODate('2018-01-02 01:01:01.001'), '$lte': ISODate('2018-01-02 13:15:59.999' ) } } },
{$project: {
data: [
"$_id",
{$dateToString: { format: "%Y-%m-%d %H:%M:%S", date: "$started" } },
{$dateToString: { format: "%Y-%m-%d %H:%M:%S", date: "$finished" } },
{$subtract: [ "$finished", "$started" ] },
"$inputs.x12InputFile.size"
]
}
}
]
)
cur.forEach(function(doc) {print(doc.data)})
当前结果
ObjectId("5a4b7775d9cc09000185b908"),2018-01-02 12:13:42,2018-01-02 12:13:48,NumberLong(5844),5322
ObjectId("5a4b77d530391100017d92df"),2018-01-02 12:15:18,2018-01-02 12:15:26,NumberLong(8593),5178
预期结果
5a4b7775d9cc09000185b908,2018-01-02 12:13:42,2018-01-02 12:13:48,5844,5322
5a4b77d530391100017d92df,2018-01-02 12:15:18,2018-01-02 12:15:26,8593,5178
任何帮助将不胜感激。我是编写 mongo 查询脚本的新手,所以如果可能的话,响应中的详细信息/示例会有所帮助。
【问题讨论】:
标签: javascript json mongodb