MongoDB में दो या अधिक सरणी फील्ड को जोड़कर एक सरणी बनाने के लिए एग्रीगेशन में $concatArrays ऑपरेटर का उपयोग करें।
उदाहरण
दो सरणी फील्ड वाला दस्तावेज़ बनाएं:
> db.arrayConcatenationDemo.insertOne({"TeacherName": ["Chris", "Robert"], "StudentName": ["Mike", "Sam"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5ce921c078f00858fb12e911") }
दस्तावेज़ देखें:
> db.arrayConcatenationDemo.find().pretty();
{ "_id" : ObjectId("5ce921c078f00858fb12e911"), "TeacherName" : [ "Chris", "Robert" ], "StudentName" : [ "Mike", "Sam" ] }
दोनों सरणी जोड़ें
> db.arrayConcatenationDemo.aggregate([
{
"$project": {
"StudentAndTeacherName": {$concatArrays: ["$TeacherName", "$StudentName"]}
}
}
]);
आउटपुट:
{ "_id" : ObjectId("5ce921c078f00858fb12e911"), "StudentAndTeacherName" : [ "Chris", "Robert", "Mike", "Sam" ] }
व्याख्या:
$concatArrays: [array1, array2, ...]- सरणियों को क्रम में जोड़ता है- पहले TeacherName के तत्व, फिर StudentName के तत्व
- मूल फील्ड अपरिवर्तित रहते हैं (केवल प्रोजेक्शन में नया फील्ड)
एकाधिक सरणी जोड़ें
db.collection.aggregate([
{$project: {
allNames: {$concatArrays: ["$array1", "$array2", "$array3", ["static", "values"]]}
}}
])
स्थिर सरणी ["static", "values"] भी जोड़ सकते हैं।
$concatArrays vs $push (एग्रीगेशन में)
| ऑपरेटर | उपयोग |
|---|---|
$concatArrays | मौजूदा सरणी फील्ड जोड़ना |
$push | $group में मान संग्रहीत करना |
अपडेट में उपयोग (MongoDB 4.2+)
db.collection.updateMany(
{},
[{$set: {combined: {$concatArrays: ["$arr1", "$arr2"]}}}]
)
पाइपलाइन अपडेट में एग्रीगेशन स्टेज उपयोग करके दस्तावेज़ में नया जोड़ा गया फील्ड बना सकते हैं।