这是我的问题:在我的Mongo数据库中,我有一个包含以下项的集合:
{
'id': 1,
'steps': [
{
action: 'start',
info: 'foo'
},
{
action: 'stop',
info: 'bar'
}
]
}
我想获得“开始”步骤的总数。
我尝试使用MongoDB聚合框架:我在
$unwind
上使用steps.action
,在$match
上使用steps.action
来匹配“开始”。但是,我得到的数据太多并达到了聚合的极限:
exception: aggregation result exceeds maximum document size (16MB)
。我不需要数据,我只想要计数,但是我找不到如何做的方法(尝试使用$ group却没有成功)。提前致谢,
最佳答案
如果您想要计数,可以使用此
db.test.count({"steps.action":"start"})
但这不会考虑到步骤包含带有
start
Action 的多个步骤的情况。当您还需要使用
start
计算所有步骤时,则需要展开数组,对steps.action进行匹配,然后将结果分组以进行计数。db.test.aggregate({$unwind:"$steps"}, {$match:{"steps.action":"start"}},{ $group: { _id: null, count: { $sum: 1 } } })
关于mongodb - Mongodb聚合$ unwind然后计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27313922/