MongoDB में ऐरे इंटरसेक्शन के लिए aggregate() में $setIntersection का उपयोग करें।
नमूना डेटा बनाना
> db.demo625.insertOne( { Name: "John", Marks: [56,98,60] } );
> db.demo625.insertOne( { Name: "John", Marks: [110,56,72] } );
> db.demo625.insertOne( { Name: "Chris", Marks: [90,91] } );
> db.demo625.insertOne( { Name: "Robert", Marks: [60,75] } );
सभी दस्तावेज़ देखना
> db.demo625.find();
{ "_id" : ObjectId("..."), "Name" : "John", "Marks" : [ 56, 98, 60 ] }
{ "_id" : ObjectId("..."), "Name" : "John", "Marks" : [ 110, 56, 72 ] }
{ "_id" : ObjectId("..."), "Name" : "Chris", "Marks" : [ 90, 91 ] }
{ "_id" : ObjectId("..."), "Name" : "Robert", "Marks" : [ 60, 75 ] }
ऐरे इंटरसेक्शन क्वेरी
निर्दिष्ट ऐरे [56,98,60] के साथ प्रत्येक दस्तावेज़ के Marks ऐरे का इंटरसेक्शन खोजने के लिए:
> db.demo625.aggregate([
{ "$project": {
"Name": 1,
"Marks": { "$setIntersection": [ "$Marks", [56,98,60] ] }
}}
])
परिणाम:
{ "_id" : ObjectId("..."), "Name" : "John", "Marks" : [ 56, 60, 98 ] }
{ "_id" : ObjectId("..."), "Name" : "John", "Marks" : [ 56 ] }
{ "_id" : ObjectId("..."), "Name" : "Chris", "Marks" : [ ] }
{ "_id" : ObjectId("..."), "Name" : "Robert", "Marks" : [ 60 ] }
व्याख्या: $setIntersection दो ऐरे के सामान्य तत्व लौटाता है। पहले दस्तावेज़ में सभी तीन मान मेल खाते हैं, दूसरे में केवल 56, तीसरे में कोई नहीं, और चौथे में केवल 60।