コレクションの例:
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では不可能です。 mongodb 1.9.1から、このようなもので動作するはずですが(テストされていません):
db.tags.find({ $and: [ {tags: { $all: ["blue", "cheap"] } }, { tags: { $nin: ["red", "tall"] } } ] })