Това е така, защото заявката не може да съвпадне с никакви документи, където parameters
на полето на масива има точния обект на масив като стойност [{"foo": "bar", "ding": "dong"}]
. За да демонстрираме това, нека вмъкнем няколко примерни документа в колекция:
/* 0 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e48f"),
"parameters" : [
{
"foo" : "bar"
}
]
}
/* 1 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e490"),
"parameters" : [
{
"foo" : "bar",
"ding" : "dong"
}
]
}
Извършва се запитване към тази колекция за parameters
масив с този обект масив [{"foo":"bar"}]
ще доведе документа с "_id" :ObjectId("551d777fcfd33f4e2a61e48f")
. Ако обаче промените обекта си на заявка, за да използвате $elemMatch
тогава ще доведе и двата документа:
db.collection.find({"parameters": { "$elemMatch": { "foo": "bar" } }});