пример коллекции:
db.tags.insert({"tags":["red", "tall", "cheap"]});
db.tags.insert({"tags":["blue", "tall", "expensive"]});
db.tags.insert({"tags":["blue", "little", "cheap"]});
найти все, что включает тег "синий"
db.tags.find({tags: { $elemMatch: { $eq: "blue" } }})
найти все помеченные "синие" и только синие
db.tags.find({tags: "blue"})
найти все теги "синий" и "дешевый"
db.tags.find({ tags: { $all: ["cheap", "blue"] } } )
найди все не "синие"
db.tags.find({tags: { $ne: "blue" } })
найти все "синие" и "дешевые", но не "красные" и не "высокие"
невозможно в моем монго дб. С mongodb 1.9.1 на что-то подобное должно работать, хотя (не проверено):
db.tags.find({ $and: [ {tags: { $all: ["blue", "cheap"] } }, { tags: { $nin: ["red", "tall"] } } ] })