gpt4 book ai didi

javascript - 如何使用 MongoDB 聚合

转载 作者:可可西里 更新时间:2023-11-01 10:24:19 34 4
gpt4 key购买 nike

我有以下数据对象:

[
{
"_id": "56bab”,
"region": “AS”,
“spentOn”: [
“56bf623a0c90b5”
]
},
{
"_id": "57bab",
"region": "EU",
"spentOn": [
"b5”,
"b6”,
"b8”,
]
},
{
"_id": "58bab",
"region": "EU",
"spentOn": [
"b5”
"b6”
]
}
]

我想编写一个 MongoDB 调用(来自 JS)以根据我指定的区域获取最常见的 spentOn 值。例如,如果我说 region='EU' 我会期望返回:b6、b5 和 b8。

我读过this page并尝试了以下操作,但不确定我如何获得特定区域的那些?

return Q.promise(function(resolve, reject) {
User.aggregate( [
{ $group: { _id: "$spentOn", count: { "$sum":1 } } },
{ }
] );
resolve();
});

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

就像评论中已经建议的那样,这里的技巧是使用 $unwind阶段。

因此,一个可能的解决方案是:

db.users.aggregate([
{$match:{
region: "EU"
}},
{$unwind:"$spentOn"},
{$group:{
_id: "$spentOn",
count: {$sum:1}
}},
{$sort: {count:-1}}
])

结果如下:

{ "_id" : "b6", "count" : 2 }
{ "_id" : "b5", "count" : 2 }
{ "_id" : "b8", "count" : 1 }

关于javascript - 如何使用 MongoDB 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35454888/

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