2013-11-14 69 views
1

我有一个具有数组值(!)状态属性的用户集合。

我可以很容易地找到锁定用户

db.users.find({'state' : 'locked'}) 

,因为条件“窥视”的状态数组。

但是,我需要在聚合框架的背景下,我不能得到它的工作。以下是我的一个非工作尝试:

db.users.aggregate({ 
    '$group' : { 
    '_id' : { '$cond' : [{'$eq' : ['$state', 'locked']}, 
         'locked', 
         'not_locked'] 
    }, 
    'count' : { '$sum' : 1 } 
    } 
}) 

IOW,我想根据状态数组中存在的元素存在来生成组_id。

回答

0

我假设你想要的文件的每个状态的可能要素,并为他们拥有的状态每组算你的原始文件...

你可以先做一个$做到这一点放松以分解文档/状态组合。然后将各州分组在一起。

如果状态可以复制,可能会有点棘手(展开,组ID /状态,组状态+计数)