MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

एक mongodb $match के भीतर, फ़ील्ड EQUALING के बजाय MATCHING फ़ील्ड के लिए परीक्षण कैसे करें

आप परिणामों में जो देख रहे हैं वह सही है। आपका दृष्टिकोण थोड़ा गलत है। यदि आप अपेक्षित परिणाम चाहते हैं, तो आपको इस दृष्टिकोण का उपयोग करना चाहिए:

collection.aggregate([
  {$match:{greetings:{$elemMatch:query}}},
  {$unwind:"$greetings"},
  {$match:{"greetings.hello":"world"}},
]).toArray()

इसके साथ, आपको निम्न आउटपुट मिलना चाहिए:

[
  {greetings:{hello:"world"}},
  {greetings:{hello:"world"}},
  {greetings:{"hello":"world","extra":"data"}
]

जब भी आप aggregation . का उपयोग कर रहे हों MongoDB में और एक एकत्रीकरण पाइपलाइन बनाना चाहते हैं जो आपके द्वारा अपेक्षित दस्तावेज़ उत्पन्न करे, आपको हमेशा अपनी क्वेरी पहले चरण से शुरू करनी चाहिए। और फिर बाद के चरणों से आउटपुट की निगरानी के लिए चरणों को जोड़ें।

आपके $unwind . का आउटपुट चरण होगा:

[{
  greetings:{hello:"world"}
},
{
  greetings:{hello:"world", extra:"data"}
},
{
  greetings:{hello:"world"}
},
{
  greetings:{aloha:"mars"}
}]

अब यदि हम आपके द्वारा उपयोग किए गए तीसरे चरण को शामिल करते हैं, तो यह greetings . के लिए मेल खाएगा कुंजी जिसका मान {hello:"world"} . है और उस सटीक मूल्य के साथ, उसे पाइपलाइन में केवल दो दस्तावेज़ मिलेंगे। तो आप केवल प्राप्त कर रहे होंगे:

{ "greetings" : { "hello" : "world" } }
{ "greetings" : { "hello" : "world" } }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो जेसन स्कीमा सत्यापनकर्ता कोई भी काम नहीं कर रहा है

  2. नोडज / नेवला के साथ एक उप-दस्तावेज़ का आंशिक अद्यतन

  3. मोंगोडीबी, मौजूदा एम्बेडेड दस्तावेज़ में एकाधिक स्तर डॉट नोटेशन के साथ नया {फ़ील्ड:मान} जोड़ें?

  4. जर्नल फ़ाइलें जर्नल निर्देशिका में मौजूद हैं, फिर भी जर्नलिंग सक्षम किए बिना प्रारंभ हो रही हैं

  5. स्प्रिंग-डेटा-मोंगोडब का उपयोग करके एक समग्र ऑपरेशन के परिणाम को स्ट्रीम करना