Javascript MongoDB-如何按两个字段分组&;字段的和值?
我有这样的数组json&如何在itemId和不同日期上分组:Javascript MongoDB-如何按两个字段分组&;字段的和值?,javascript,mongodb,meteor,mongodb-query,aggregation-framework,Javascript,Mongodb,Meteor,Mongodb Query,Aggregation Framework,我有这样的数组json&如何在itemId和不同日期上分组: let data=[ {itemId:'001', tranDate:'2020/03/15', qty:10}, {itemId:'001', tranDate:'2020/03/15', qty:30}, {itemId:'002', tranDate:'2020/03/15', qty:20}, {itemId:'001', tranDate
let data=[
{itemId:'001', tranDate:'2020/03/15', qty:10},
{itemId:'001', tranDate:'2020/03/15', qty:30},
{itemId:'002', tranDate:'2020/03/15', qty:20},
{itemId:'001', tranDate:'2020/03/16', qty:50},
]
我想要的结果如下图所示:
请在这方面帮助我。您可以使用MongoDB的聚合来执行此操作:
db.collection.aggregate([
/** group on itemId & tranDate & sum qty field values */
{
$group: { _id: { itemId: "$itemId", k: "$tranDate" }, v: { $sum: "$qty" } }
},
/** Push entire data into data field [{k :k...,v:v...},{k :k...,v:v...}] */
{
$project: {
_id: 0,
data: {
$arrayToObject: [
[
{ k: "$_id.k", v: "$v" },
{ k: "itemId", v: "$_id.itemId" }
]
]
}
}
},
/** Replace data as new root for each document */
{ $replaceRoot: { newRoot: "$data" } }
]);
测试:
Ref:,,你能分享一下你到目前为止尝试过的吗?我尝试使用聚合,但工作错误,请展示me@whoami没关系:)谢谢,只是给我一些我想要的提示:)@whoami