gpt4 book ai didi

javascript - 编写 MongoDB shell 脚本,以干净格式返回 ID

转载 作者:可可西里 更新时间:2023-11-01 10:13:03 25 4
gpt4 key购买 nike

下面的脚本应该从 mongo 返回我想要的值的 CSV,我想要的所有数据都被返回,但是两个项目的格式不同,尝试我可能无法只获得值。
问题 1: 第一个返回项“$_id”返回 ObjectId("5a4b7775d9cc09000185b908") 但我只想获取值 5a4b7775d9cc09000185b908。每次我尝试解析它或使用 valueOf 时,它都会返回一个空值。

问题 2: 我请求的第 4 项应该是时间格式,表示使用两个日期值 {$subtract: [ "$finished", "$started"] }(开始和结束时间)。我返回的是 NumberLong(5844),它应该只是毫秒数。

脚本

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 查询脚本的新手,因此响应中的详细信息/示例会尽可能提供帮助。

最佳答案

我不会使用聚合框架来格式化结果。无论如何,您无法在聚合管道中将 ObjectId 转换为字符串。

var cursor = db.submissions.find({started:{'$gte': ISODate('2018-01-02 
01:01:01.001'),'$lte': ISODate('2018-01-02 13:15:59.999' )}},{started : 1,
finished : 1, "inputs.inputFile.size" : 1});

cursor.forEach( function(doc) {
var arr=[];
arr.push(doc._id.str);
arr.push(doc.started.toISOString());
arr.push(doc.finished.toISOString());
arr.push(doc.finished.getTime() - doc.started.getTime());
print(arr)
});

关于javascript - 编写 MongoDB shell 脚本,以干净格式返回 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48432789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com