Det er fordi forespørgslen ikke kan matche nogen dokumenter, hvor matrixfeltet parameters
har det nøjagtige array-objekt som værdi [{"foo": "bar", "ding": "dong"}]
. For at demonstrere dette, lad os indsætte et par eksempeldokumenter i en samling:
/* 0 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e48f"),
"parameters" : [
{
"foo" : "bar"
}
]
}
/* 1 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e490"),
"parameters" : [
{
"foo" : "bar",
"ding" : "dong"
}
]
}
Forespørger på denne samling for parameters
array med dette objekt array [{"foo":"bar"}]
vil bringe dokumentet med "_id" :ObjectId("551d777fcfd33f4e2a61e48f")
. Men hvis du ændrer dit forespørgselsobjekt til at bruge $elemMatch
så vil den bringe begge dokumenter:
db.collection.find({"parameters": { "$elemMatch": { "foo": "bar" } }});