我有一个Mongo Collection,我正在尝试聚合,我需要能够根据子文档中的值的总和来过滤结果。我的每个条目都有一个看起来像这个
的子文档{
"_id": <MongoId>,
'clientID': 'some ID',
<Other fields I can filter on normally>
"bidCompData": [
{
"lineItemID": "210217",
"qtyBid": 3,
"priceBid": 10.25,
"qtyComp": 0
"description": "Lawn Mowed"
"invoiceID": 23
},
{
<More similar entries>
}
]
}
我要做的是过滤给定记录中qtyBid
的总和。例如,我的用户可以指定他们只想要在大于5的所有bidCompData
中具有总qtyBid的记录。我的研究表明我不能在{{{}之外使用$sum
1}}管道中的阶段,但我需要能够只为每个单独的记录求和$group
值。目前我的管道看起来像这样。
qtyBid
我尝试了另一个小组并在我目前拥有的小组之前放松,以便我可以得到那里的总和,但它不会让我保留我的字段除了id和sum字段。有没有办法在不使用array(
array('$project' => $basicProjection), //fields to project calculated earlier using the input parameters.
array('$match' => $query),
array('$group' => array(
'_id' =>
array('clientID' => '$clientID'),
'count' => array('$sum' => 1)
)
)
的情况下执行此操作?我的数据库很大,我无法承受JS执行的速度。