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

mongodb में आंतरिक रूप से मेल खाने वाले फ़ील्ड

यदि संभव हो, तो मेरा सुझाव है कि आप डेटा संग्रहीत करते समय शर्त सेट करें ताकि आप एक त्वरित सत्य जांच कर सकें (isInStudentsList ) उस प्रकार की क्वेरी करना बहुत तेज़ होगा।

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

db.students.aggregate( 
    {$project: 
        {studentId: 1, studentIdComp: "$students.id"}},  
    {$unwind: "$studentIdComp"}, 
    {$project : { studentId : 1, 
        isStudentEqual: { $eq : [ "$studentId", "$studentIdComp" ] }}}, 
    {$match: {isStudentEqual: true}})

आपके इनपुट उदाहरण को देखते हुए आउटपुट होगा:

{
    "result" : [
         {
             "_id" : ObjectId("517b88decd483543a8bdd95b"),
             "studentId" : 23,
             "isStudentEqual" : true
         }
    ],
    "ok" : 1
}

चरणों का संक्षिप्त विवरण:

  1. दस्तावेज़ का केवल studentId के साथ एक प्रोजेक्शन बनाएं और केवल id . वाली सरणी के साथ एक नया फ़ील्ड (इसलिए पहला दस्तावेज़ इसमें होगा [23, 55]
  2. उस संरचना का उपयोग करते हुए, $unwind . यह studentIdComp . में प्रत्येक सरणी तत्व के लिए एक नया अस्थायी दस्तावेज़ बनाता है सरणी।
  3. अब, उन दस्तावेज़ों को लें, और एक नया दस्तावेज़ प्रोजेक्शन बनाएं, जिसमें studentId बना रहे और isStudentEqual . नामक एक नया फ़ील्ड जोड़ता है जो दो क्षेत्रों की समानता की तुलना करता है, studentId और studentIdComp . याद रखें कि इस समय एक ही अस्थायी दस्तावेज़ है जिसमें वे दो फ़ील्ड शामिल हैं।
  4. अंत में, जांचें कि तुलना मान isStudentEqual . है सत्य है और उन दस्तावेज़ों को वापस कर दें (जिसमें मूल दस्तावेज़ शामिल होगा _id और studentId .
  5. यदि छात्र कई बार सूची में था, तो आपको परिणामों को studentId पर समूहीकृत करने की आवश्यकता हो सकती है या _id डुप्लिकेट को रोकने के लिए (लेकिन मुझे नहीं पता कि आपको इसकी आवश्यकता होगी)।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एपीआई कनेक्ट से पता चलता है कि स्कीमा अपडेट करते समय GET /apim/ त्रुटि नहीं हो सकती है

  2. MongoDB $gte एकत्रीकरण पाइपलाइन ऑपरेटर

  3. नेवला, एक्सप्रेस, NodeJS के साथ अद्यतन मॉडल

  4. MongoDB:'_id' के बजाय 'id' आउटपुट

  5. बचाने से पहले नेवला _id प्रभावित