gpt4 book ai didi

node.js - 通过 NodeJS 对 MongoDB 进行求和聚合

转载 作者:太空宇宙 更新时间:2023-11-04 03:10:39 25 4
gpt4 key购买 nike

在开始之前,我想声明,有关类似问题的其他答案均不适用于此问题。首先考虑以下 JSON 代码

  "_id": "1412302013-01-20,11:32:22" 
"display": [
{
"Name": "LOG-11-05-SH-O1.mp4",
"Type": "Startup",
"Count": 2,
"Detail": [
{
"Start": "2013-01-20,11:32:22",
"End": "2013-01-20,11:32:30"
},
{
"Start": "2013-01-20,11:32:22",
"End": "2013-01-20,11:32:30"
}
]
},
{
"Name": "PUR-12-47-SH-X3.mp4",
"Type": "Movie",
"Count": "2",
"Detail": [
{
"Start": "2013-01-20,11:32:22",
"End": "2013-01-20,11:32:30"
},
{
"Start": "2013-01-20,11:32:22",
"End": "2013-01-20,11:32:30"
}
]
},

ID 基本上是车牌号与时间戳的组合。我想要做的是汇总 "Count" 的总和,其中 "Name": "LOG-11-05-SH-O1.mp4"

我什至无法汇总简单的总和,因此尝试汇总这个总和是不可能的。在 NodeJS 中运行脚本时,我要么得到 undefined 要么得到 [object Object]

我不知道出了什么问题,因为我一直在关注各种在线示例。

尝试使用下面 parvin 的答案后,我仍然未定义:

collection.aggregate([
{$match : {"display.Name" : "LOG-11-05-SH-O1.mp4"}},
{$unwind : "$display"},
{$group : {_id : "$_id",
name : {$first : "$display.Name"},
total : {$sum : "$display.Count"}
}
}], function(err, result) {
console.log("Aggregation: " + result.total);
});

我一直在尝试将代码格式化为这些 docs

最佳答案

aggregate 回调的 result 参数是一个数组,而不是单个值。如果您只是转储结果,您就可以看到这一点:

console.log(result);

因此,要访问数组中第一个文档的total:

console.log(result[0].total);

但这将是 0,因为文档中的 Count 是一个字符串,而不是数字。您不能$sum字符串。

因为您也只需要 "Name": "LOG-11-05-SH-O1.mp4" 元素的 total ,所以您需要在 $unwind 之后添加另一个过滤器:

collection.aggregate([
{$match : {"display.Name" : "LOG-11-05-SH-O1.mp4"}},
{$unwind : "$display"},
{$match : {"display.Name" : "LOG-11-05-SH-O1.mp4"}},
{$group : {_id : "$_id",
name : {$first : "$display.Name"},
total : {$sum : "$display.Count"}
}
}], function(err, result) {
console.log(result);
});

关于node.js - 通过 NodeJS 对 MongoDB 进行求和聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21253339/

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