我有一个包含标签的数组,例如["red", "green", "blue", "white", "black"],它是文档的一部分。
现在我想要找到所有包含红色和蓝色标签的文档。
我有一个包含标签的数组,例如["red", "green", "blue", "white", "black"],它是文档的一部分。
现在我想要找到所有包含红色和蓝色标签的文档。
db.my_collection.find({tags: { $all : ["red","blue"]}})
如果您想要匹配"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