Het is omdat de query niet kan overeenkomen met documenten waarin het arrayveld parameters
heeft het exacte array-object als waarde [{"foo": "bar", "ding": "dong"}]
. Laten we om dit te demonstreren een paar voorbeelddocumenten invoegen in een verzameling:
/* 0 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e48f"),
"parameters" : [
{
"foo" : "bar"
}
]
}
/* 1 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e490"),
"parameters" : [
{
"foo" : "bar",
"ding" : "dong"
}
]
}
Deze verzameling opvragen voor parameters
array met dit object array [{"foo":"bar"}]
zal het document met "_id" brengen:ObjectId("551d777fcfd33f4e2a61e48f")
. Als u echter uw query-object wijzigt om $elemMatch
dan brengt het beide documenten:
db.collection.find({"parameters": { "$elemMatch": { "foo": "bar" } }});