MongoDB多列求和的聚合操作

MongoDB多列求和的聚合操作,mongodb,Mongodb,我在MongoDB有这个收藏: { "_id" : ObjectId("5f1c0360235e252a40a5c7a0"), "DEPTS" : "4", "CONVENTIONS" : 2, "GIFTS" : 6, "MONEY" : 60 } { "_id" : ObjectId("5f1c0360235e252a40a

我在MongoDB有这个收藏:

{ "_id" : ObjectId("5f1c0360235e252a40a5c7a0"), "DEPTS" : "4", "CONVENTIONS" : 2, "GIFTS" : 6, "MONEY" : 60 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7a1"), "DEPTS" : "1", "CONVENTIONS" : 7, "GIFTS" : 9, "MONEY" : 4 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7a2"), "DEPTS" : "5", "CONVENTIONS" : 3, "GIFTS" : 6, "MONEY" : 61 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7a3"), "DEPTS" : "6", "CONVENTIONS" : 3, "GIFTS" : 9, "MONEY" : 34 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7a4"), "DEPTS" : "5", "CONVENTIONS" : 3, "GIFTS" : 4, "MONEY" : 35 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7a5"), "DEPTS" : "1", "CONVENTIONS" : 8, "GIFTS" : 4, "MONEY" : 19 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7a6"), "DEPTS" : "6", "CONVENTIONS" : 5, "GIFTS" : 5, "MONEY" : 95 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7a7"), "DEPTS" : "7", "CONVENTIONS" : 8, "GIFTS" : 8, "MONEY" : 19 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7a8"), "DEPTS" : "5", "CONVENTIONS" : 1, "GIFTS" : 8, "MONEY" : 20 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7a9"), "DEPTS" : "6", "CONVENTIONS" : 6, "GIFTS" : 8, "MONEY" : 42 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7aa"), "DEPTS" : "3", "CONVENTIONS" : 3, "GIFTS" : 6, "MONEY" : 76 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7ab"), "DEPTS" : "8", "CONVENTIONS" : 3, "GIFTS" : 10, "MONEY" : 66 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7ac"), "DEPTS" : "10", "CONVENTIONS" : 6, "GIFTS" : 9, "MONEY" : 82 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7ad"), "DEPTS" : "3", "CONVENTIONS" : 4, "GIFTS" : 8, "MONEY" : 72 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7ae"), "DEPTS" : "8", "CONVENTIONS" : 10, "GIFTS" : 10, "MONEY" : 33 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7af"), "DEPTS" : "10", "CONVENTIONS" : 7, "GIFTS" : 5, "MONEY" : 68 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7b0"), "DEPTS" : "3", "CONVENTIONS" : 5, "GIFTS" : 9, "MONEY" : 89 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7b1"), "DEPTS" : "9", "CONVENTIONS" : 3, "GIFTS" : 2, "MONEY" : 44 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7b2"), "DEPTS" : "5", "CONVENTIONS" : 4, "GIFTS" : 6, "MONEY" : 99 }
{ "_id" : ObjectId("5f1c0360235e252a40a5c7b3"), "DEPTS" : "7", "CONVENTIONS" : 7, "GIFTS" : 7, "MONEY" : 17 }
我只希望每个部门有一行(它由DEPTS列的名称表示)和所有列的值之和

对于单个列中的总和,我需要:

db.depts.aggregate([ { $group: { _id: '$DEPTS', total: { $sum: '$MONEY' }}  }, {$out: "depts"} ])
因此:

{ "_id" : "1", "total" : 431 }
{ "_id" : "2", "total" : 442 }
{ "_id" : "8", "total" : 402 }
{ "_id" : "4", "total" : 292 }
{ "_id" : "7", "total" : 548 }
{ "_id" : "3", "total" : 445 }
{ "_id" : "6", "total" : 872 }
{ "_id" : "9", "total" : 351 }
{ "_id" : "10", "total" : 525 }
{ "_id" : "5", "total" : 585 }
如果我想知道约定、礼物和金钱栏的总和,我该怎么办

像这样:

{ "_id" : "1", "totalConv" : *value*, "totalGifts" : *value*, "total" : 431}
{ "_id" : "2", "totalConv" : *value*, "totalGifts" : *value*, "total" : *value*}
{ "_id" : "8", "totalConv" : *value*, "totalGifts" : *value*, "total" : 431}
etc.
试试这个代码

db.collection.aggregate([
  {
    $group: {
      _id: "$DEPTS",
      total: {
        $sum: "$MONEY"
      },
      totalConv: {
        $sum: "$CONVENTIONS"
      },
      totalGifts: {
        $sum: "$GIFTS"
      }
    }
  }
])

试试这段代码

db.collection.aggregate([
  {
    $group: {
      _id: "$DEPTS",
      total: {
        $sum: "$MONEY"
      },
      totalConv: {
        $sum: "$CONVENTIONS"
      },
      totalGifts: {
        $sum: "$GIFTS"
      }
    }
  }
])

我希望它能帮助你

db.getCollection('table').aggregate([{$group: {
         _id: '$DEPTS',
        totalConventions:{ $sum: '$CONVENTIONS' },
        totalGifts:{ $sum: '$GIFTS' },
        totalMoney:{ $sum: '$MONEY' },
    }}]);

我希望它能帮助你

db.getCollection('table').aggregate([{$group: {
         _id: '$DEPTS',
        totalConventions:{ $sum: '$CONVENTIONS' },
        totalGifts:{ $sum: '$GIFTS' },
        totalMoney:{ $sum: '$MONEY' },
    }}]);

这回答了你的问题吗?