चूंकि उप-दस्तावेजों के साथ प्रश्नों MongoDB संग्रह के बारे में बहुत भ्रम है , इसलिए मैंने इसके जवाबों को उदाहरणों के साथ समझाने के लायक समझा:
पहले मैंने संग्रह में केवल दो वस्तुओं को सम्मिलित message
किया है:
> db.messages.find().pretty()
{
"_id" : ObjectId("5cce8e417d2e7b3fe9c93c32"),
"headers" : {
"From" : "reservations@marriott.com"
}
}
{
"_id" : ObjectId("5cce8eb97d2e7b3fe9c93c33"),
"headers" : {
"From" : "reservations@marriott.com",
"To" : "kprasad.iitd@gmail.com"
}
}
>
तो प्रश्न का परिणाम क्या है: db.messages.find({headers: {From: "reservations@marriott.com"} }).count()
यह एक होना चाहिए क्योंकि दस्तावेज़ों के लिए ये प्रश्न जहाँ headers
ऑब्जेक्ट के बराबर होते हैं {From: "reservations@marriott.com"}
, केवल इसमें कोई अन्य फ़ील्ड नहीं होता है या हमें पूरे उप-दस्तावेज़ को फ़ील्ड के मान के रूप में निर्दिष्ट करना चाहिए।
तो @ Edmondo1984 से जवाब के अनुसार
उप-दस्तावेजों के भीतर समानता मिलान दस्तावेजों का चयन करती है यदि उप-क्रम फ़ील्ड के आदेश सहित बिल्कुल निर्दिष्ट उप-दस्तावेज़ से मेल खाता है ।
उपरोक्त कथनों में से, निम्न क्वेरी परिणाम क्या होना चाहिए?
> db.messages.find({headers: {To: "kprasad.iitd@gmail.com", From: "reservations@marriott.com"} }).count()
0
और क्या होगा अगर हम दूसरे दस्तावेजों के उप-दस्तावेजों के समान From
और To
अर्थात के क्रम को बदल देंगे ?
> db.messages.find({headers: {From: "reservations@marriott.com", To: "kprasad.iitd@gmail.com"} }).count()
1
इसलिए, यह क्षेत्र के आदेश सहित बिल्कुल निर्दिष्ट उप-दस्तावेज़ से मेल खाता है ।
डॉट ऑपरेटर का उपयोग करने के लिए, मुझे लगता है कि यह हर एक के लिए बहुत स्पष्ट है। आइए नीचे प्रश्न के परिणाम देखें:
> db.messages.find( { 'headers.From': "reservations@marriott.com" } ).count()
2
मुझे उम्मीद है कि उपरोक्त उदाहरण के साथ ये स्पष्टीकरण किसी को उप-दस्तावेजों के साथ क्वेरी खोजने पर अधिक स्पष्टता देगा ।