我有一个带有标签的数组,它是文档的一部分,例如 ["red", "green", "blue", "white", "black"]
现在我想查找所有具有红色和蓝色的文档。
我有一个带有标签的数组,它是文档的一部分,例如 ["red", "green", "blue", "white", "black"]
现在我想查找所有具有红色和蓝色的文档。
使用 $all 条件查找同时匹配“red”和“blue”条件的记录。
db.my_collection.find({tags: { $all : ["red","blue"]}})
如果您想要匹配“红色”或“蓝色”的记录,那么您可以使用 $in 条件。
db.my_collection.find({tags: { $in : ["red","blue"]}})
此外,如果有人想知道如何否定逐项搜索,即查找匹配“红色”和“蓝色”但不匹配“绿色”和“白色”的记录,这可以通过$nin运算符来完成,这可能不是当有人阅读 $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 风格搜索。