Tengo un documento mongo como el siguiente.
{ "_id" : ObjectId("588adde40fcbbbc341b34e1c"), "title" : "Fifa world cup", "tags" : [ { "name" : "Football", "type" : "Sports" }, { "name" : "World cup", "type" : "Sports" }, { "name" : "Fifa", "type" : "Manager" } ] } Escribí la siguiente consulta para obtener todas las etiquetas con el tipo Sports , pero solo obtengo 1 elemento en lugar de 2
db.collection.find( { tags: { $elemMatch: { type: "Sports" } } }, { "tags.$" : 1 })¿Es posible obtener todos los elementos coincidentes? ¿Qué me estoy perdiendo aquí?
Puedes usar la agregación:
db.collection.aggregate([ { $unwind : "$tags" }, { $match : { "tags.type" : "Sports" } }, { $group : { _id : "$_id", tags : {$addToSet : "$tags"} } } ])