Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB-如何按两个字段分组&;字段的和值?_Javascript_Mongodb_Meteor_Mongodb Query_Aggregation Framework - Fatal编程技术网

Javascript MongoDB-如何按两个字段分组&;字段的和值?

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

我有这样的数组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:'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