获取MongoDB中子文档的字段和



我试图在多个文档中获得不同货币金额的总和,但我正在努力进行聚合。

初始文档(子文档是嵌入的,所以不需要展开):

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',
},
]
};

提前感谢!

您需要这个聚合查询:

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

例子

最新更新