MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB:obtenha documentos por tags


coleção de exemplo:
db.tags.insert({"tags":["red", "tall", "cheap"]});
db.tags.insert({"tags":["blue", "tall", "expensive"]});
db.tags.insert({"tags":["blue", "little", "cheap"]}); 

encontre tudo que inclua a tag "azul"
db.tags.find({tags: { $elemMatch: { $eq: "blue" } }})

encontre tudo marcado como "azul" e apenas azul
db.tags.find({tags: "blue"})

encontre tudo marcado como "azul" e "barato"
db.tags.find({ tags: { $all: ["cheap", "blue"] } } )

encontre tudo que não seja "azul"
db.tags.find({tags: { $ne: "blue" } })

encontre tudo "azul" e "barato", mas não "vermelho" e não "alto"

não é possível no meu mongo db. A partir do mongodb 1.9.1 em algo assim deve funcionar, embora (não testado):
db.tags.find({ $and: [ {tags: { $all: ["blue", "cheap"] } }, { tags: { $nin: ["red", "tall"] } } ] })