Es porque la consulta no puede coincidir con ningún documento donde el campo de matriz parameters
tiene el objeto matriz exacto como valor [{"foo": "bar", "ding": "dong"}]
. Para demostrar esto, insertemos un par de documentos de muestra en una colección:
/* 0 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e48f"),
"parameters" : [
{
"foo" : "bar"
}
]
}
/* 1 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e490"),
"parameters" : [
{
"foo" : "bar",
"ding" : "dong"
}
]
}
Consultando esta colección para parameters
matriz con este objeto matriz [{"foo":"bar"}]
traerá el documento con "_id":ObjectId("551d777fcfd33f4e2a61e48f")
. Sin embargo, si cambia su objeto de consulta para usar $elemMatch
luego traerá ambos documentos:
db.collection.find({"parameters": { "$elemMatch": { "foo": "bar" } }});