MongoDB में, $concat
एग्रीगेशन पाइपलाइन ऑपरेटर दो या दो से अधिक स्ट्रिंग्स को जोड़ता है और कॉन्टेनेटेड स्ट्रिंग लौटाता है।
उदाहरण
मान लीजिए हमारे पास employees
. नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{ "_id" : 1, "firstName" : "Sandy", "surname" : "Beach", "position" : "Lifesaver", "salary" : 55000 }
हम $concat
. का उपयोग कर सकते हैं पहले नाम और उपनाम को जोड़ने के लिए ऑपरेटर:
db.employees.aggregate(
[
{ $project: {
_id: 0,
name: { $concat: [ "$firstName", "$surname" ] }
}
}
]
)
परिणाम:
{ "name" : "SandyBeach" }
और स्ट्रिंग्स
पिछला उदाहरण दो स्ट्रिंग्स को जोड़ता है, लेकिन यदि आवश्यक हो तो हम और अधिक जोड़ सकते हैं।
उदाहरण के लिए, हम प्रथम नाम और उपनाम के बीच एक स्थान सम्मिलित कर सकते हैं।
उदाहरण:
db.employees.aggregate(
[
{ $project: {
_id: 0,
name: { $concat: [ "$firstName", " ", "$surname" ] }
}
}
]
)
परिणाम:
{ "name" : "Sandy Beach" }
हम अपने संयोजन में और फ़ील्ड भी शामिल कर सकते हैं।
उदाहरण:
db.employees.aggregate(
[
{ $project: {
_id: 0,
employee: {
$concat: [ "$firstName", " ", "$surname", ", ", "$position" ]
}
}
}
]
)
परिणाम:
{ "employee" : "Sandy Beach, Lifesaver" }
अन्य डेटा प्रकार
$concat
ऑपरेटर केवल तार का समर्थन करता है। $concat
लागू किया जा रहा है किसी भिन्न प्रकार के परिणाम में त्रुटि होती है।
उदाहरण:
db.employees.aggregate(
[
{ $project: {
_id: 0,
name: {
$concat: [ "$firstName", "$salary" ]
}
}
}
]
)
परिणाम:
Error: command failed: { "ok" : 0, "errmsg" : "$concat only supports strings, not double", "code" : 16702, "codeName" : "Location16702" } : aggregate failed : [email protected]/mongo/shell/utils.js:25:13 [email protected]/mongo/shell/assert.js:18:14 [email protected]/mongo/shell/assert.js:618:17 [email protected]/mongo/shell/assert.js:708:16 [email protected]/mongo/shell/db.js:266:5 [email protected]/mongo/shell/collection.js:1046:12 @(shell):1:1
इस उदाहरण में मैंने एक संख्या के साथ एक स्ट्रिंग को संयोजित करने का प्रयास किया लेकिन मुझे एक त्रुटि मिली जो बताती है कि $concat केवल स्ट्रिंग्स का समर्थन करता है, डबल नहीं ।