Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में दो ऐरे फील्ड्स को कैसे मर्ज करें?

MongoDB एग्रीगेशन में $setUnion का उपयोग करके दो ऐरे मर्ज करना

$setUnion एग्रीगेशन ऑपरेटर दो या अधिक ऐरे लेता है और एक ऐरे लौटाता है जिसमें सभी इनपुट ऐरे के यूनिक एलिमेंट्स होते हैं (डुप्लिकेट हटाए गए, सेट यूनियन)।

नमूना डेटा बनाना

> db.mergeTwoArrayFieldDemo.insertOne({
  "NaturalNumbers": [1,2,3,8,10,20,30],
  "WholeNumbers": [0,1,2,63,78,20,45]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd68e4057806ebf1256f11d") }

डॉक्यूमेंट देखना

> db.mergeTwoArrayFieldDemo.find().pretty();

आउटपुट:

{
  "_id" : ObjectId("5cd68e4057806ebf1256f11d"),
  "NaturalNumbers" : [ 1, 2, 3, 8, 10, 20, 30 ],
  "WholeNumbers" : [ 0, 1, 2, 63, 78, 20, 45 ]
}

ऐरे मर्ज करना

> db.mergeTwoArrayFieldDemo.aggregate([
  {
    "$project": {
      "MergedArray": { "$setUnion": [ "$NaturalNumbers", "$WholeNumbers" ] }
    }
  }
]);

आउटपुट:

{ "_id" : ObjectId("5cd68e4057806ebf1256f11d"), "MergedArray" : [ 0, 1, 2, 3, 8, 10, 20, 30, 45, 63, 78 ] }

व्याख्या

  • $setUnion - दोनों ऐरे से यूनिक मानों को जोड़ता है, डुप्लिकेट हटाता है (उदाहरण के लिए, 1, 2, 20 दोनों में मौजूद हैं)।
  • परिणाम सॉर्टेड ऑर्डर में है (MongoDB सेट ऑपरेशन्स के लिए आउटपुट सॉर्ट करता है)।
  • मूल डॉक्यूमेंट्स अपरिवर्तित रहते हैं; यह एक प्रोजेक्शन है।

अन्य सेट ऑपरेटर्स

ऑपरेटरपरिणाम
$setUnionसभी यूनिक एलिमेंट्स (यूनियन)
$setIntersectionसामान्य एलिमेंट्स (इंटरसेक्शन)
$setDifferenceपहले ऐरे में मौजूद एलिमेंट्स लेकिन दूसरे में नहीं
$setIsSubsetबूलियन: पहला ऐरे दूसरे का सबसेट है?
$setEqualsबूलियन: दोनों ऐरे में समान एलिमेंट्स हैं?

डुप्लिकेट्स को संरक्षित करने के लिए (यूनियन के बजाय कंसीनिटेशन)

डुप्लिकेट्स साथ सभी एलिमेंट्स को संयोजित करने के लिए $concatArrays का उपयोग करें:

{ $project: { Merged: { $concatArrays: [ "$NaturalNumbers", "$WholeNumbers" ] } } }

मुख्य बिंदु

  • $setUnion डुप्लिकेट-मुक्त मर्ज के लिए आदर्श है।
  • दोनों ऐरे फील्ड्स समान डॉक्यूमेंट में मौजूद होने चाहिए (या $lookup के माध्यम से जुड़े हुए)।
  • परिणामों को स्थायी रूप से संग्रहीत करने के लिए $merge या $out के साथ संयोजित करें।
  1. - MongoDB में ऐरे में कैसे जोड़ें?

    MongoDB में ऐरे में जोड़ने के लिए $concatArrays ऑपरेटर का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo435.insertOne({"FirstName":["Chris"],"LastName":["Brown"]} ); {    "acknowledged" : true,    "inserted

  1. - MongoDB एग्रीगेशन: फील्ड्स को मर्ज/कंबाइन करके काउंट करना

    फील्ड्स को मर्ज/कंबाइन करके काउंट करने के लिए $group के साथ $sum और $sort का उपयोग करें। नमूना डेटा बनाना (विषयों के साथ) db.demo647.insertOne({Subject:MongoDB}); सभी दस्तावेज़ देखना db.demo647.find(); { Subject : MySQL }, { Subject : MongoDB }, { Subject : MySQL }, { Subject : SQL Server }, { S

  1. - MongoDB में सबडॉक्यूमेंट्स के ऐरे को कैसे क्वेरी करें?

    सबडॉक्यूमेंट्स के ऐरे को क्वेरी करने के लिए MongoDB में $unwind का उपयोग करें। नमूना डेटा बनाना (सबडॉक्यूमेंट्स ऐरे) db.demo499.insertOne({ details: [ { Name:MIT, Rank: 1, CountryName:US }, { Name:Stanford University, Rank: 2 }, { Name:University of California, Berkeley, Rank: 3 }