En la respuesta a question encontré una solución interesante para buscar valores de matriz usando $ elemMatch.
Si tenemos los siguientes documentos de nuestra colección:
{
foo : [ { bar : "xy", baz : 1 },
{ bar : "a", baz : 10 } ]
},
{
foo : [ { bar : "xy", baz : 5 },
{ bar : "b", baz : 50 } ]
}
La siguiente consulta sólo coincidirá con el primer documento:
db.test.find({
foo : { "$all" : [ { "$elemMatch" : { bar : "xy", baz : 1} }, { "$elemMatch" : { bar : "a", baz : 10 } } ] }
});
he probado con varios otros ejemplos y realmente funciona. Pero la documentación oficial para el operador $all no dice nada sobre la combinación de estas dos consultas.
¿Es este el comportamiento previsto o un error? ¿O es solo un problema que la documentación no cubra este caso de uso?
Gracias por la información. Entiendo que es difícil documentar cada combinación, pero sería muy útil saber que algunos de los operadores se pueden combinar. –
¿Hay alguna manera de hacer esto todavía? –