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

नेवला समुच्चय कैसे एक सरणी में एकाधिक संग्रह मैप करने के लिए?

इस तरह की स्थिति के लिए,$facet आने वाले डेटा को वर्गीकृत करने में मदद करें

db.Collection_A.aggregate([
  { $unwind: "$includes },
  {
    "$facet": {
      "joinB": [            
        {
          "$lookup": {
            "from": "Collection_B", "localField": "includes.includes_id",
            "foreignField": "_id", "as": "includes.includes_list"
          }
        },
        {
          "$group": {
            "_id": "$_id",
            "name": { "$first": "$name" },
            includes: { $push: "$includes" }
          }
        }
      ],
      "joinC": [            
        {
          "$lookup": {
            "from": "Collection_C", "localField": "includes.includes_id",
            "foreignField": "_id", "as": "includes.includes_list"
          }
        },
        {
          "$group": {
            "_id": "$_id",
            "name": { "$first": "$name" },
            includes: { $push: "$includes" }
          }
        }
      ],
      "joinD": [
        {
          "$lookup": {
            "from": "Collection_D", "localField": "includes.includes_id",
            "foreignField": "_id", "as": "includes.includes_list"
          }
        },
        {
          "$group": {
            "_id": "$_id",
            "name": { "$first": "$name" },
            includes: { $push: "$includes" }
          }
        }
      ],
      
    }
  },
  {
    $project: {
      combined: {
        "$concatArrays": [ "$joinB", "$joinC", "$joinD" ]
      }
    }
  },
  { "$unwind": "$combined" },
  {
    "$replaceRoot": { "newRoot": "$combined" }
  },
  {
    "$project": {
      _id: 1,
      name: 1,
      includes: {
        $filter: {
          input: "$includes",
          cond: {
            $ne: [ "$$this.includes_list",[] ]
          }
        }
      }
    }
  }
])

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

नोट:मुझे लगता है कि यह एक तरह का एंटी पैटर्न है जिसका आप अनुसरण करते हैं। अगर आप प्रोजेक्ट के शुरुआती चरण में हैं, तो बेहतर होगा कि अगर मैं गलत नहीं हूं तो संरचना को बदल दें।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला स्कीमा के साथ पासवर्ड की पुष्टि / पासवर्ड की पुष्टि

  2. नेवला कनेक्शन

  3. मोंगोडीबी सेवा फेडोरा में नहीं चल रही है

  4. क्या मोंगोडीबी क्वेरी में सख्त JSON $ date का उपयोग किया जा सकता है?

  5. MongoCursorException - कर्सर नहीं मिला (MongoDB PHP ड्राइवर)