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

क्वेरी दस्तावेज़ जो मोंगोडब में अन्य दस्तावेज़ों के मूल्यों पर निर्भर करते हैं

गैर-सहसंबद्ध आज़माएं आपके उपयोग के मामले के लिए 3.6 से उप क्वेरी।

कुछ इस तरह

User.aggregate(
 [{$lookup:{
   from: "users",
   pipeline:[
    {$match: {_id:mongoose.Types.ObjectId(id)}},
    {$project: {_id:0,blockedIds:1}}
   ],
   as: "noncr"
 }},
 {$match:{
   $expr:{
     $not:[
      {$in:[
        $_id,
        {$arrayElemAt:["$noncr.blockedIds",0]}
      ]}
    ]
  }
}},
{$project:{noncr:0}}]
)

$lookup इनपुट आईडी के लिए "blockedIds" और उसके बाद $match उन दस्तावेज़ों को फ़िल्टर करने के लिए जहां "_id" अवरुद्ध आईडी की सूची में नहीं है।

$expr $match चरण में एकत्रीकरण तुलना ऑपरेटरों के उपयोग की अनुमति देता है।

$arrayElemAt $lookup सरणी से पहला तत्व लाने के लिए।

$in अवरुद्ध आईडी के खिलाफ _id की तुलना करने के लिए।

$project अंतिम प्रतिक्रिया से "noncr" फ़ील्ड को निकालने के लिए बहिष्करण के साथ।

कृपया ध्यान दें कि जब आप क्वेरी का परीक्षण करते हैं तो लुक अप स्टेज की "से" विशेषता में संग्रह नाम का उपयोग करें न कि मॉडल या स्कीमा नाम का।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB इंडेक्स इंटरसेक्शन का उपयोग क्यों नहीं करता है?

  2. NODE.js और Express का उपयोग करके नेस्टेड सरणी में MongoDB डेटा कैसे पोस्ट करें

  3. MongoDB को angular2 ऐप से कैसे कनेक्ट करें?

  4. तत्व को पार करने के लिए भाग (...) का उपयोग नहीं कर सकता

  5. MongooseJS/MongoDB सटीक वाक्यांश खोजें