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

मोंगोडीबी:दो प्रश्नों के साथ एकाधिक संग्रह पूछताछ?

MongoDB में 'रिलेशनल' क्वेरी बनाने की कोशिश करना हताशा में एक अभ्यास होने जा रहा है। आपका स्कीमा एक संग्रह में कुछ जानकारी (पोस्ट की रेटिंग) और अन्य जानकारी (लेखक की उम्र) को एक अलग संग्रह में संग्रहीत करता है, लेकिन सभी MongoDB क्वेरी एकल संग्रह पर काम करती हैं। जब तक आप अपने डेटा को असामान्य नहीं करते (जो आपने कहा था कि आप नहीं करना चाहते हैं), तो आपको यह काम करने के लिए दो-पास विधि की आवश्यकता होगी।

एक दृष्टिकोण जो काम करना चाहिए वह होगा लेखक आईडी की एक सरणी बनाना और '$in' का उपयोग करके पोस्ट संग्रह की एक क्वेरी में इसका उपयोग करना। यहां बताया गया है कि यह मोंगो शेल का उपयोग करके जावास्क्रिप्ट में कैसा दिख सकता है:

> var authorList = [];
> var authorCursor = db.authors.find({age:{$gt:19,$lt:25}},{"_id":1});
> while(authorCursor.hasNext()){authorList.push(authorCursor.next()["_id"])};
> db.posts.find({"author.$id":{$in:authorList},rating:{$gt:6,$lt:9}});

पहली पंक्ति एक खाली सरणी बनाती है। दूसरी पंक्ति एक कर्सर बनाती है जो _id . का चयन करेगा आपकी लक्षित आयु सीमा के सभी लेखकों के क्षेत्र। तीसरी पंक्ति लेखक की एक सरणी को पॉप्युलेट करने के लिए कर्सर का उपयोग करती है _id एस। चौथी पंक्ति आपके लक्ष्य मानदंड से मेल खाने वाली सभी पोस्ट प्रदर्शित करती है:लेखक _id सूची में हम आपके द्वारा निर्दिष्ट सीमा में ही बनाते हैं और रेटिंग करते हैं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. डेटाटेबल पर प्रदर्शित करने के लिए विभिन्न नेवला परिणाम को एक JSON ऐरे में कैसे संयोजित करें?

  2. उल्का में समग्र कार्य का उपयोग कैसे करें

  3. LINQ लैम्ब्डा अभिव्यक्ति में स्ट्रिंग चर का प्रयोग करें

  4. Mongoose के साथ runCommand कैसे निष्पादित करें?

  5. मोंगो में उप-दस्तावेज़ व्यवस्थित करने का सबसे अच्छा तरीका?