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

डुप्लिकेट सरणियों को फ़िल्टर करें और मोंगोडब एकत्रीकरण में अद्वितीय सरणी लौटाएं

db.collection.aggregate([
  {//Denormalize first level
    "$unwind": "$newList"
  },
  {//Second nested level
    "$unwind": "$newList.newPMBList"
  },
  {//Deep nested last level
    "$unwind": "$newList.newPMBList.newPMList"
  },
  {
    $group: {//Grouping back
      "_id": null,
      "newList": {
        $push: "$newList.newPMBList.newPMList"
      }
    }
  },
  {
    $project: {//Finding unique
      newList: {
        $setUnion: [
          "$newList",
          "$newList"
        ]
      }
    }
  }
])

मेरा सुझाव है कि आप first . का उपयोग करके अन्य फ़ील्ड शामिल करें group . में संचायक और उन्हें project . में सुरक्षित रखें ।

आप नीचे दिए गए तरीके से इसे और सरल बना सकते हैं

db.test.aggregate([
  {
    "$unwind": "$newList"
  },
  {
    "$unwind": "$newList.newPMBList"
  },
  {
    "$unwind": "$newList.newPMBList.newPMList"
  },
  {
    $group: {
      "_id": null,
      "newList": {//addToSet keeps distinct
        $addToSet: "$newList.newPMBList.newPMList"
      }
    }
  }
])

इसके अलावा, एक डीनॉर्मलाइज़ेशन को छोड़कर खरीदें, लेकिन यह सरणियों की सरणी देता है।

db.test.aggregate([
  {
    "$unwind": "$newList"
  },
  {
    "$unwind": "$newList.newPMBList"
  },
  {
    $group: {
      "_id": null,
      "newList": {
        $addToSet: "$newList.newPMBList.newPMList"
      }
    }
  }
])

यदि आप किसी अन्य स्तर को छोड़ते हैं, तो यह परिणाम में एक और नेस्टेड स्तर जोड़ देगा।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. उल्का/मोंगोडीबी में डेटा में हेरफेर करते समय मैं क्या गलत कर रहा हूं?

  2. MongoDB ढांचे का उपयोग करके कीमैप को वेक्टर में बदलना

  3. उल्का प्रकाशन:किसी सरणी दस्तावेज़ फ़ील्ड में कुछ फ़ील्ड छुपा रहे हैं?

  4. mongoDB:संग्रह में कॉलम नाम का नाम बदलना

  5. नोड - नेवला 3.6 - आबादी वाले क्षेत्र के साथ क्रमबद्ध क्वेरी