Đó là vì truy vấn không thể khớp với bất kỳ tài liệu nào có trường mảng parameters
có đối tượng mảng chính xác là giá trị của nó [{"foo": "bar", "ding": "dong"}]
. Để chứng minh điều này, hãy chèn một vài tài liệu mẫu vào bộ sưu tập:
/* 0 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e48f"),
"parameters" : [
{
"foo" : "bar"
}
]
}
/* 1 */
{
"_id" : ObjectId("551d777fcfd33f4e2a61e490"),
"parameters" : [
{
"foo" : "bar",
"ding" : "dong"
}
]
}
Truy vấn bộ sưu tập này cho các thông số parameters
mảng với mảng đối tượng này [{"foo":"bar"}]
sẽ mang tài liệu có "_id":ObjectId("551d777fcfd33f4e2a61e48f")
. Tuy nhiên, nếu bạn thay đổi đối tượng truy vấn của mình để sử dụng $elemMatch
thì nó sẽ mang lại cả hai tài liệu:
db.collection.find({"parameters": { "$elemMatch": { "foo": "bar" } }});