需要帮助聚合猫鼬数据
Need help aggregating mongoose data
我有一个 MERN 堆栈应用程序,当我进行 GET 调用时,我想 return 我所有 MongoDB 对象的投票。
这是我的对象的样子:
{_id: ObjectId("6092d48d96984d233cf77152")
user: "John Doe"
movies: [
0:
_id: ObjectId("6092b19345f48a33447468a7"),
title: "Alpha",
ranking: 3
1:
_id: ObjectId("6092b19345f48a33447468a7"),
title: "Bravo",
ranking: 2
2:
_id: ObjectId("6092b19345f48a33447468a7"),
title: "Charlie",
ranking: 1
]}
{_id: ObjectId("6092d48d96984d233cf77152")
user: "John Doe"
movies: [
0:
_id: ObjectId("6092b19345f48a33447468a7"),
title: "Alpha",
ranking: 3
1:
_id: ObjectId("6092b19345f48a33447468a7"),
title: "Bravo",
ranking: 2
2:
_id: ObjectId("6092b19345f48a33447468a7"),
title: "Charlie",
ranking: 1
]}
显然会有更多数据,但基本上我希望它 return:
[{title: "Alpha", ranking: 6},
{title: "Bravo", ranking: 4},
{title: "Charlie", ranking: 2}]
我假设我必须使用 $match
函数,但这是我第一次像这样使用 Mongoose/MongoDB。提前致谢!
$unwind
解构movies
数组
$group
乘以 movies.title
并求和 ranking
let result = await YourModelName.aggregate([ // replace your model name
{ $unwind: "$movies" },
{
$group: {
_id: "$movies.title",
ranking: { $sum: "$movies.ranking" }
}
}
])
我有一个 MERN 堆栈应用程序,当我进行 GET 调用时,我想 return 我所有 MongoDB 对象的投票。
这是我的对象的样子:
{_id: ObjectId("6092d48d96984d233cf77152")
user: "John Doe"
movies: [
0:
_id: ObjectId("6092b19345f48a33447468a7"),
title: "Alpha",
ranking: 3
1:
_id: ObjectId("6092b19345f48a33447468a7"),
title: "Bravo",
ranking: 2
2:
_id: ObjectId("6092b19345f48a33447468a7"),
title: "Charlie",
ranking: 1
]}
{_id: ObjectId("6092d48d96984d233cf77152")
user: "John Doe"
movies: [
0:
_id: ObjectId("6092b19345f48a33447468a7"),
title: "Alpha",
ranking: 3
1:
_id: ObjectId("6092b19345f48a33447468a7"),
title: "Bravo",
ranking: 2
2:
_id: ObjectId("6092b19345f48a33447468a7"),
title: "Charlie",
ranking: 1
]}
显然会有更多数据,但基本上我希望它 return:
[{title: "Alpha", ranking: 6},
{title: "Bravo", ranking: 4},
{title: "Charlie", ranking: 2}]
我假设我必须使用 $match
函数,但这是我第一次像这样使用 Mongoose/MongoDB。提前致谢!
$unwind
解构movies
数组$group
乘以movies.title
并求和ranking
let result = await YourModelName.aggregate([ // replace your model name
{ $unwind: "$movies" },
{
$group: {
_id: "$movies.title",
ranking: { $sum: "$movies.ranking" }
}
}
])