2013-11-14 114 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 /狀態,組狀態+計數)