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

MongoDB में एक ही फ़ील्ड के लिए एकाधिक दस्तावेज़ों के लिए शर्त लागू करना

चूंकि MongoDB में जुड़ने की अवधारणा नहीं है, इसलिए आपको अपने इनपुट को एक दस्तावेज़ में कम करके इस पर काम करने की आवश्यकता है।

यदि आप अपनी दस्तावेज़ संरचना को बदलते हैं ताकि आप निम्न की तरह टैग की एक सरणी संग्रहीत कर रहे हैं:

{id: 123,  tag:["tag1","tag2","tag3"]}
{id: 456,  tag:["tag1"]}

आप निम्न की तरह एक प्रश्न कर सकते हैं:

db.user.find({$and:[{tag:"tag1"},{tag:"tag2"},{tag:"tag3"}]})

यदि आवश्यक हो, तो आप उपयोगकर्ता आईडी के लिए टैग की एक सरणी उत्सर्जित करने के लिए नक्शा-कम कर सकते हैं, ताकि आप उस पर उपरोक्त क्वेरी कर सकें।

संपादित करें - एक साधारण मानचित्र-कमी सहित

प्रारंभिक इनपुट को एक ऐसे प्रारूप में प्राप्त करने के लिए यहां एक बहुत ही सरल नक्शा-कम है जो find के लिए उपयोगी है ऊपर दी गई क्वेरी।

var map = function() {emit(this.id, {tag:[this.tag]});}
var reduce = function(key, values){
   var result_array=[];
   values.forEach(function(v1){             
       v1.tag.forEach(function(v2){
        result_array.push(v2);
        });
    });
return {"tag":result_array};}

var op = db.user.mapReduce(map, reduce, {out:"mr_results"})

फिर आप निम्न की तरह मानचित्र-रिड्यूस आउटपुट संग्रह पर क्वेरी कर सकते हैं:

db.mr_results.find({$and:[{"value.tag":"tag1"},{"value.tag":"tag2"}, {"value.tag":"tag3"}]})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoimport --jsonArray . पर उप-दस्तावेजों पर _id बनाएं

  2. क्या मैं php . में एक स्ट्रिंग के रूप में mongodb क्वेरी पास कर सकता हूं

  3. MongoDB को DynamoDB में माइग्रेट करना, भाग 2

  4. मैं MongoDb के लिए लॉगिंग स्तर को जानकारी में कैसे सेट करूं?

  5. शब्दकोश<स्ट्रिंग, वस्तु>-से-Bsonदस्तावेज़ रूपांतरण _t फ़ील्ड को छोड़ कर