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

नेवले को आबाद करने के बाद खोजें

@जेसन कस्ट इसे पहले ही बहुत अच्छी तरह से समझाया गया है - इस स्थिति में अक्सर सबसे अच्छा समाधान होता है कि Users को क्वेरी करने से रोकने के लिए स्कीमा को बदल दिया जाए। अलग संग्रह में संग्रहीत दस्तावेजों के गुणों द्वारा।

यहां सबसे अच्छा समाधान है जिसके बारे में मैं सोच सकता हूं कि यह आपको ऐसा करने के लिए मजबूर नहीं करेगा, हालांकि (क्योंकि आपने टिप्पणी में कहा था कि आप नहीं कर सकते)।

Users.find().populate({
  path: 'email',
  match: {
    type: 'Gmail'
  }
}).exec(function(err, users) {
  users = users.filter(function(user) {
    return user.email; // return only users with email matching 'type: "Gmail"' query
  });
});

हम यहां जो कर रहे हैं वह केवल email को पॉप्युलेट कर रहा है मेल खाने वाली अतिरिक्त क्वेरी (match .populate() . में विकल्प कॉल) - अन्यथा email Users . में फ़ील्ड दस्तावेज़ों को null पर सेट किया जाएगा ।

जो कुछ बचा है वह है .filter लौटे Users . पर सरणी, जैसे आपके मूल प्रश्न में - केवल बहुत सरल, बहुत सामान्य जांच के साथ। जैसा कि आप देख सकते हैं - या तो email वहां है या नहीं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो डीबी आईएसओ प्रारूप

  2. मोंगोस, मोंगोडीबी:पुश () के बाद दस्तावेज़ को कैसे सहेजना है ()?

  3. उल्का:सरणी फ़ील्ड में आइटम कैसे जांचें, लेकिन उस फ़ील्ड को प्रकाशित में बाहर करें?

  4. दस्तावेज़ में खोजी गई एम्बेडेड संपत्ति का केवल अंतिम स्तर लौटाएं

  5. MongoDB कुल समूह सरणी से कुंजी:योग मान