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

MongoDb एकत्रीकरण $लुकअप विदेशी _ids के साथ सरणियों में

आपको $unwind . करना होगा अदिश और उप दस्तावेज़ दोनों को समतल करने के लिए विदेशी _ids और $group . जोड़ें मूल संरचना वापस पाने के लिए पाइपलाइन के अंत में चरण।

$first खेतों और $push . रखने के लिए संचायक $arrayElemAt . के साथ $unwind . के लिए समायोजित करने के लिए सरणी मानों को संचित करने के लिए

var linkedModels = [
    {
        "$match": { "del": false }
    }, 
    {
        "$lookup": {
            from: "charnpcalign",
            localField: "align",
            foreignField: "_id",
            as: "linked_align"
        }
    }, 
    {
        "$unwind":"$classes"
    },
    {
        "$lookup": {
            from: "charnpcclass",
            localField: "classes",
            foreignField: "_id",
            as: "linked_classes"
        }
    },
    {
        "$group": {
           "_id": "$_id",
           "name": {"$first":"$name"},
           "align": {"$first":"$align"},
           "classes":{"$push":"$classes"},
           "carrying":{"$first":"$carrying"},
           "linked_align":{"$first":"$linked_align"},
           "linked_classes":{"$push":{"$arrayElemAt":["$linked_classes",0]}}
        }
    },
    {
        "$unwind":"$carrying"
    },
    {
        "$lookup": {
            from: "item",
            localField: "carrying.itemId",
            foreignField: "_id",
            as: "linked_carrying"
        }
    },
    {
        "$group": {
           "_id": "$_id",
           "name": {"$first":"$name"},
           "align": {"$first":"$align"},
           "classes":{"$first":"$classes"},
           "linked_align":{"$first":"$linked_align"},
           "carrying":{"$push":"$carrying"},
           "linked_carrying":{"$push":{"$arrayElemAt":["$linked_carrying",0]}}
        }
    }
]

आपको $unwind . की आवश्यकता नहीं है अदिश सरणी पर (classes ) 3.4 संस्करण में और आप {"classes":{"$push":"$classes"}} को बदल सकते हैं &{"linked_classes":{"$push":{$arrayElemAt:["$linked_classes",0]}}} {"classes":{"$first":"$classes"}} . के साथ &{"linked_classes":{"$first":"$linked_classes"}} क्रमशः।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला में एक विशिष्ट फ़ील्ड को कैसे अपडेट करें?

  2. स्वचालित डेटाबेस स्वास्थ्य जांच

  3. CentOS 7 . पर MongoDB स्थापित करना

  4. MongoDB छँटाई

  5. एक नेवला प्रतिक्रिया की वस्तु संपत्ति तक नहीं पहुँच सकता