sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB:obtener documentos por etiquetas

colección de ejemplo:

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

encuentra todo lo que incluye la etiqueta "azul"

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

encuentra todos los etiquetados como "azul" y solo azul

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

encuentra todos los etiquetados "azul" y "barato"

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

encuentra todo lo que no sea "azul"

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

encuentra todo "azul" y "barato" pero no "rojo" ni "alto"

no es posible en mi mongo db. Sin embargo, desde mongodb 1.9.1 en algo como esto debería funcionar (no probado):

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