MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB :obtenir des documents par balises

exemple de collection :

db.tags.insert({"tags":["red", "tall", "cheap"]});
db.tags.insert({"tags":["blue", "tall", "expensive"]});
db.tags.insert({"tags":["blue", "little", "cheap"]}); 

trouver tous ceux qui incluent le tag "bleu"

db.tags.find({tags: { $elemMatch: { $eq: "blue" } }})

trouver tous les taggés "bleu" et uniquement bleu

db.tags.find({tags: "blue"})

trouver tous les taggés "bleu" et "pas cher"

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

trouver tout ce qui n'est pas "bleu"

db.tags.find({tags: { $ne: "blue" } })

trouver tout "bleu" et "pas cher" mais pas "rouge" et pas "grand"

pas possible dans mon mongo db. À partir de mongodb 1.9.1 sur quelque chose comme ça devrait fonctionner, cependant (non testé):

db.tags.find({ $and: [ {tags: { $all: ["blue", "cheap"] } }, { tags: { $nin: ["red", "tall"] } } ] })