Node.js 如何从mongodb集合中获取和分组数据,其中每个对象在一个组中具有相同的值
已经回顾了问题和解决方案:但没有对所选数据进行清晰理解并对其进行分组 我拥有的MongoDB模式和数据: 货币模型Node.js 如何从mongodb集合中获取和分组数据,其中每个对象在一个组中具有相同的值,node.js,mongodb,mongoose,merge,grouping,Node.js,Mongodb,Mongoose,Merge,Grouping,已经回顾了问题和解决方案:但没有对所选数据进行清晰理解并对其进行分组 我拥有的MongoDB模式和数据: 货币模型 [ { currency: 'USD', status: 1, user_id: '123', price: 43.67, quantity: 22019 }, { currency: 'USD', status: 1, user_id: '234', price: 43.69, quantity: 22
[ { currency: 'USD',
status: 1,
user_id: '123',
price: 43.67,
quantity: 22019 },
{ currency: 'USD',
status: 1,
user_id: '234',
price: 43.69,
quantity: 22019,
},
{ currency: 'USD',
status: 1,
user_id: '456',
price: 43.67,
quantity: 8,
}... more 100 data ]
因此我想要什么:
希望合并第一条和第三条记录的数量值,因为它具有相同的价格。
包含记录数量的相同价格被合并
可以使用查询/过滤/投影吗?我们如何有效地获取数据并基于相同的价格条件进行合并,即总数量为22019+8价格为43.67您可以尝试以下方法:
db.sales.aggregate(
[
{
$group:
{
_id: "$price",
quantity: { $sum: "$quantity" },
count: { $sum: 1 }
}
}
]
)
作为@prasad_uu在评论部分给出的解决方案, -使用mongoose中的聚合,根据价格组获取数量总和:
CurrencyModel.aggregate([
{ $group:
{ _id: "$price",
qty: { $sum: "$quantity" }
}
}
]).then(data => {console.log(data);})
合并数量后,价格将保持不变,其他字段(如
user\u id
?@prasad\u)将不会发生任何变化。我只是想得到基于不同价格的总数量。这个分组阶段将这样做:{$group:{{id:$price,qty:{$sum:$quantity}}
@prasad}我也可以用mongoose吗?语法可能不同。您必须查看猫鼬文档。