C'est parce que la requête ne peut correspondre à aucun document où le champ de tableau parameters
a l'objet tableau exact comme valeur [{"foo": "bar", "ding": "dong"}]
. Pour illustrer cela, insérons quelques exemples de documents dans une collection :
/* 0 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e48f"),
"parameters" : [
{
"foo" : "bar"
}
]
}
/* 1 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e490"),
"parameters" : [
{
"foo" : "bar",
"ding" : "dong"
}
]
}
Interroger cette collection pour les parameters
tableau avec cet objet tableau [{"foo":"bar"}]
apportera le document avec "_id" :ObjectId("551d777fcfd33f4e2a61e48f")
. Cependant, si vous modifiez votre objet de requête pour utiliser $elemMatch
alors il apportera les deux documents :
db.collection.find({"parameters": { "$elemMatch": { "foo": "bar" } }});