【发布时间】:2016-01-01 12:57:36
【问题描述】:
我正在尝试在 MongoDB 中进行聚合。
我收藏了一些物品。每个项目都有一个数组rows,rows 中的每个对象都有quantity 和price 字段。
我想将quantity和price相乘,但不知道如何正确指定字段。
我试过了
const pipeline = [
{
$group: {
_id: {
number: '$number',
},
total: {
$sum: {
$multiply: [
'$rows.quantity',
'$rows.price'
]
}
},
}
}
];
但它说$multiply 只支持数字类型而不支持数组。
所以它似乎不明白$rows.quantity是数组中每个对象中的数字类型字段quantity。
我想我可能应该使用$each 或其他东西来遍历数组中的对象。
来自Using multiply aggregation with MongoDB 我看到我正确指定了字段;然而,在那个例子中它是一个嵌套对象而不是一个数组,所以也许我必须使用https://docs.mongodb.org/v3.0/reference/operator/aggregation/unwind/?
示例文档
{
number: 2,
rows: [
{
quantity: 10,
price: 312
},
{
quantity: 10,
price: 312
},
{
quantity: 10,
price: 312
},
]
}
【问题讨论】:
-
您可以尝试使用 $unwind 来拆分数组,然后您可以尝试使用 $multiple。链接在这里。 docs.mongodb.org/v3.0/reference/operator/aggregation/unwind。如果您可以粘贴示例文档,我会尝试让您知道答案。
标签: mongodb mongodb-query aggregation-framework