È perché la query non può corrispondere a nessun documento in cui il campo dell'array parameters
ha l'oggetto array esatto come valore [{"foo": "bar", "ding": "dong"}]
. Per dimostrarlo, inseriamo un paio di documenti di esempio in una raccolta:
/* 0 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e48f"),
"parameters" : [
{
"foo" : "bar"
}
]
}
/* 1 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e490"),
"parameters" : [
{
"foo" : "bar",
"ding" : "dong"
}
]
}
Interrogazione di questa raccolta per parameters
array con questo oggetto array [{"foo":"bar"}]
porterà il documento con "_id":ObjectId("551d777fcfd33f4e2a61e48f")
. Tuttavia, se modifichi l'oggetto query per utilizzare $elemMatch
quindi porterà entrambi i documenti:
db.collection.find({"parameters": { "$elemMatch": { "foo": "bar" } }});