ऐसा इसलिए है क्योंकि क्वेरी किसी भी दस्तावेज़ से मेल नहीं खा सकती है जहाँ सरणी फ़ील्ड 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" } }});