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

संयुक्त परिणाम वाले तत्वों की मोंगोडब लुकअप सरणी

आपको उस मैपिंग को $lookup . के बाहर चलाने की आवश्यकता है $map चलाकर साथ में $arrayElemAt दोनों सरणियों से एकल जोड़ी प्राप्त करने के लिए और फिर लागू करें $mergeObjects परिणाम के रूप में एक वस्तु प्राप्त करने के लिए:

db.Order.aggregate([
    {
        $lookup: {
            from: "products",
            localField: "context.products.id",
            foreignField: "_id",
            as: "productDetails"
        }
    },
    {
        $addFields: {
            productDetails: {
                $map: {
                    input: "$productDetails",
                    in: {
                        _id: "$$this._id",
                        name: "$$this.context.name"
                    }
                }
            }
        }
    },
    {
        $project: {
            _id: 1,
            "context.products": {
                $map: {
                    input: "$context.products",
                    as: "prod",
                    in: {
                        $mergeObjects: [
                            "$$prod",
                            { $arrayElemAt: [ { $filter: { input: "$productDetails", cond: { $eq: [ "$$this._id", "$$prod.id" ] } } }, 0 ] }
                        ]
                    }
                }
            }
        }
    }
])

मोंगो खेल का मैदान

अंतिम चरण का लक्ष्य दो सरणियाँ लेना है:products और productDetails ($lookup . का आउटपुट ) और उनके बीच मिलान खोजें। हम जानते हैं कि हमेशा एक मैच होता है इसलिए हम केवल एक आइटम प्राप्त कर सकते हैं $arrayElemAt 0 . $map . के आउटपुट के रूप में "विलय" दस्तावेज़ युक्त एकल सरणी होगी।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. उपयोगकर्ताओं को कॉन्फ़िगर करने और PHP के साथ Mongo से जुड़ने में समस्या

  2. mongoengine के साथ GridFs के बजाय DEFAULT_FILE_STORAGE पर फ़ाइलें अपलोड करें

  3. .Date . का उपयोग करके *अभिव्यक्ति* के लिए क्रमांकन जानकारी निर्धारित करने में असमर्थ

  4. गुम तारीखों को रिकॉर्ड में भरें

  5. मोंगो क्वेरी में लंबा समय लगता है। इसे और तेज़ कैसे करें?