É porque a consulta não pode corresponder a nenhum documento em que o campo de matriz
parameters
tem o objeto array exato como seu valor [{"foo": "bar", "ding": "dong"}]
. Para demonstrar isso, vamos inserir alguns documentos de amostra em uma coleção:/* 0 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e48f"),
"parameters" : [
{
"foo" : "bar"
}
]
}
/* 1 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e490"),
"parameters" : [
{
"foo" : "bar",
"ding" : "dong"
}
]
}
Consultando esta coleção para
parameters
array com este array de objetos [{"foo":"bar"}]
trará o documento com "_id" :ObjectId("551d777fcfd33f4e2a61e48f")
. No entanto, se você alterar seu objeto de consulta para usar $elemMatch
então ele trará os dois documentos:db.collection.find({"parameters": { "$elemMatch": { "foo": "bar" } }});