Bru*_*tti 0 mongodb mongodb-query
我已经阅读了文档,但仍然不太了解。根据它,它会根据我自己的规格在集合中返回特定的文档。对于分组,它几乎说了同样的话:“按某些指定的表达式对文档进行分组,并为每个不同的分组将文档输出到下一阶段”
那么,以下代码实际上在做什么?对我来说似乎多余。
BillingCycle.aggregate([{
$project: {credit: {$sum: "$credits.value"}, debt: {$sum: "debts.value"}}
}, {
$group: {
_id: null,
credit: {$sum: "$credit"}, debt: {$sum: "debt"}
}
}, {
$project: {_id: 0, credit: 1, debt: 1 }
}]});
Run Code Online (Sandbox Code Playgroud)
“按某些指定的表达式对文档进行分组,并为每个不同的分组将文档输出到下一阶段”
的目的$group不仅是将某些字段推送到下一个阶段,而且还基于在_id属性中传递的输入条件收集一些元素。
另一方面,手动$project功能将排除/包括某些字段(或自定义字段)到下一个阶段。对于每个文档,您可以看到定义“将带有请求字段的文档传递到管道的下一阶段。指定的字段可以是输入文档中的现有字段,也可以是新计算的字段。”
在一种情况下,如果我们抑制_idfrom,$group那么它将为整个输入文档计算累积值。看起来好像是这样$project。
对于$ project阶段的查询是多余的
BillingCycle.aggregate([ {
$group: {
_id: null,
credit: {$sum: "$credit.value"}, debt: {$sum: "debt.value"}
}
}, {
$project: {_id: 0, credit: 1, debt: 1 }
}]});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |