MongoDB में कई दस्तावेज़ों के फील्ड मानों को एकल सरणी में संग्रहीत करने के लिए एग्रीगेशन पाइपलाइन में $group और $addToSet (या $push) ऑपरेटर का उपयोग करें।
उदाहरण
विषय वाले दस्तावेज़ बनाएं:
> db.specifyReturnFormatDemo.insertOne({"Subject":"MongoDB"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cefd364ef71edecf6a1f6c0") }
> db.specifyReturnFormatDemo.insertOne({"Subject":"MySQL"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cefd369ef71edecf6a1f6c1") }
> db.specifyReturnFormatDemo.insertOne({"Subject":"SQL Server"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cefd36fef71edecf6a1f6c2") }
दस्तावेज़ देखें:
> db.specifyReturnFormatDemo.find();
{ "_id" : ObjectId("5cefd364ef71edecf6a1f6c0"), "Subject" : "MongoDB" }
{ "_id" : ObjectId("5cefd369ef71edecf6a1f6c1"), "Subject" : "MySQL" }
{ "_id" : ObjectId("5cefd36fef71edecf6a1f6c2"), "Subject" : "SQL Server" }
सभी Subject मानों को एक सरणी में संग्रहीत करें
> db.specifyReturnFormatDemo.aggregate([
{
"$group": {
"_id": 0,
"Subject": { "$addToSet": "$Subject" }
}
},
{
"$project": { "_id": 0, "Subject": 1 }
}
]);
आउटपुट:
{ "Subject" : [ "SQL Server", "MySQL", "MongoDB" ] }
व्याख्या:
$groupमें_id: 0- सभी दस्तावेज़ों को एक समूह में रखता है$addToSet- अद्वितीय मान जोड़ता है (डुप्लिकेट हटाता है)$push- सभी मान जोड़ता है (डुप्लिकेट रखता है)$project- आउटपुट फॉर्मेट तय करता है (_id छुपाएं, Subject दिखाएं)
$addToSet vs $push
| ऑपरेटर | व्यवहार |
|---|---|
$addToSet | केवल अद्वितीय मान, क्रम गारंटी नहीं |
$push | सभी मान (डुप्लिकेट सहित), क्रम बनाए रखता है |
उपयोग: ड्रॉपडाउन विकल्प, विशिष्ट मान सूची, रिपोर्टिंग के लिए सरणी बनाने के लिए उपयोगी।