2009-12-20 47 views

回答

11

使用$ all條件查找符合「紅色」和「藍色」條件的記錄。

db.my_collection.find({tags: { $all : ["red","blue"]}}) 

如果您想要記錄匹配「紅色」或「藍色」,那麼您可以使用$ in條件。

db.my_collection.find({tags: { $in : ["red","blue"]}}) 
3

而且萬一有人不知道如何否定逐項搜索,即發現同時匹配「紅」「藍」和不符合「綠色」和「白」這個可以用來完成這個紀錄$寧運營商,當某人正在閱讀$ nin的文檔這可能不是很明顯(http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24nin - 解析描述是棘手我):

db.my_collection.find({tags: { $all : ["red","blue"], $nin : ["green", "white" ]}}) 

這是非常酷的,因爲它允許相對好的搜索語法與否定:

tokenRequired1 tokenRequired2 !tokenForbidden1 !tokenForbidden2 

非常自然的Gmail風格搜索。

如建議here和如果您從記錄中創建所有令牌的數組,則可以進行全文搜索,但我不知道它是否有效或甚至是最佳方式。

相關問題