【问题标题】:Get a field sum of subdocuments in MongoDB获取MongoDB中子文档的字段总和
【发布时间】:2022-11-24 06:02:04
【问题描述】:

我试图在多个文档中获取不同货币金额的总和,但我在聚合方面遇到了困难。

初始文档(嵌入子文档,因此不需要展开):

const products = [
  {
    title: 'product1',
    price: [
      {
        amount: 100,
        currency: 'USD',
      },
      {
        amount: 20,
        currency: 'EUR',
      }
    ]
  },
  {
    title: 'product2',
    price: [
      {
        amount: 330,
        currency: 'USD',
      },
    ]
  },
  {
    title: 'product3',
    price: [
      {
        amount: 50,
        currency: 'EUR',
      },
    ]
  },
];

预期结果:

const output = {
  grossIncome: [
    {
      amount: 430,
      currency: 'USD',
    },
    {
      amount: 70,
      currency: 'EUR',
    },
  ]
};

先感谢您!

【问题讨论】:

    标签: mongodb aggregation-framework


    【解决方案1】:

    您需要此聚合查询:

    • $unwind解构数组,可以得到每个元素。
    • 然后$group货币和$sum金额。
    db.collection.aggregate([
      {
        "$unwind": "$price"
      },
      {
        "$group": {
          "_id": "$price.currency",
          "amount": {
            "$sum": "$price.amount"
          }
        }
      }
    ])
    

    例子here

    【讨论】:

      猜你喜欢
      • 2014-11-12
      • 2023-03-29
      • 1970-01-01
      • 2013-07-13
      • 1970-01-01
      • 2018-06-06
      • 2023-01-13
      • 2020-10-08
      • 2014-02-02
      相关资源
      最近更新 更多