Raz*_*Raz 2 aggregation mongodb nosql aggregation-framework
我在聚合管道的第一阶段使用以下方法得到了这组结果$match:
[
{ a: 1, b: 2 },
{ a: 3, b: 4 }
]
Run Code Online (Sandbox Code Playgroud)
现在我想对所有 A 和 B 求和,并且仍然保留它们,因此我将得到如下结果:
{
total_sum: 10,
items: [...] // first and second objects ofcourse
}
Run Code Online (Sandbox Code Playgroud)
我尝试过$group,$push但是,push 只从对象中推送特定字段,我需要命名 A 和 B,而不是解析所有它们。
我该怎么做?
$set- 创建新字段total来求和a和b。$group- Group by ,表示将所有文档null相加并添加到数组中。totalitems它将$$ROOT添加整个文档。
items: {
$push: "$ROOT"
}
Run Code Online (Sandbox Code Playgroud)
如果您只需要某些字段,请指定(所需的)文档模式。
items: {
$push: {
A: "$a",
B: "$b"
}
}
Run Code Online (Sandbox Code Playgroud)
$unset(如果使用$push $$ROOT)- 从字段中删除total字段items。db.collection.aggregate([
{
$set: {
total: {
$sum: [
"$a",
"$b"
]
}
}
},
{
$group: {
_id: null,
total_sum: {
$sum: "$total"
},
items: {
$push: "$$ROOT"
}
}
},
{
$unset: "items.total"
}
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2430 次 |
| 最近记录: |