2011-09-30 59 views
1

我在蒙戈集合對象的顯示如下:

{ name:"Scott", bio:"Stumped", roles:["USR","ADM"] } 

還有更多的角色是可能的。我想執行路口查詢的任意組合,比如:

db.coll.find({$and:[{roles:"USR"},{roles:{$ne:"ADM"}}]}) 

某些查詢可能是所有角色=,有些可能是所有角色=,有的可能是混合與上面的例子!我用$或$和$也有一些成功的方法,但絕對沒有我可以通過$和$查找的查詢。我甚至試圖利用$ where和$ elemMatch來模擬我想要的東西。我也真的試圖避免多個查詢w /應用程序處理交集。想法?

+0

提示?:我知道在mongo集合中只是存儲爲mongo內部的有序字符串..也許有一些查詢可以列出您正在查找的序列化排列? – Scott

回答

1
db.coll.find("roles":{$all:["USR","ADM"]}}) 

我認爲這會幫助你,至少它返回的結果您正在尋找

+0

再看一下,我想要取消一些標準。示例:給我角色包含USR但不包含ADM的所有對象。這確實解決了我的問題的一部分,但越來越接近! – Scott

2

找到了答案:

db.coll.find({roles : { $all : ["USR"], $nin : ["ADM"]}}) 

感謝Hohhi領導我正確的道路!