2012-03-22 6 views
11

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?

Respuesta

5

Este es el comportamiento previsto. La documentación no cubre este caso de uso y estamos trabajando para mejorarlo. Sin embargo, es difícil documentar todas las combinaciones de consultas posibles.

+2

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. –

+0

¿Hay alguna manera de hacer esto todavía? –

Cuestiones relacionadas