MongoDB में, $concatArrays
एग्रीगेशन पाइपलाइन ऑपरेटर दो या दो से अधिक सरणियों को जोड़ता है और संयोजित सरणी देता है।
उदाहरण
मान लीजिए हमारे पास data
. नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{ "_id" : 1, "a" : [ 1, 2, 3 ], "b" : [ 4, 5, 6 ] }
हम $concatArrays
. का उपयोग कर सकते हैं a
. की सरणी को जोड़ने के लिए ऑपरेटर b
. की सरणी के साथ फ़ील्ड फ़ील्ड:
db.data.aggregate([
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
result: { $concatArrays: [ "$a", "$b" ] }
}
}
])
परिणाम:
{ "result" : [ 1, 2, 3, 4, 5, 6 ] }
खाली सरणी
एक खाली सरणी के साथ एक सरणी को जोड़ने से कुछ भी नहीं बदलता है।
मान लीजिए हमारे संग्रह में निम्नलिखित दस्तावेज़ भी हैं:
{ "_id" : 2, "a" : [ 1, 2, 3 ], "b" : [ ] }
आइए लागू करें $concatArrays
उसके लिए::
db.data.aggregate([
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
result: { $concatArrays: [ "$a", "$b" ] }
}
}
])
परिणाम:
{ "result" : [ 1, 2, 3 ] }
हम बिना किसी बदलाव के पहली सरणी के साथ समाप्त होते हैं।
अनुपलब्ध फ़ील्ड
किसी फ़ील्ड को ऐसे फ़ील्ड से जोड़ने का प्रयास करना जो मौजूद नहीं है null
returns लौटाता है ।
कल्पना कीजिए कि हमारे संग्रह में निम्नलिखित दस्तावेज़ भी हैं:
{ "_id" : 3, "a" : [ 1, 2, 3 ] }
यहां बताया गया है कि जब हम $concatArrays
apply लागू करते हैं तो क्या होता है a
. के लिए फ़ील्ड और एक गैर-मौजूद फ़ील्ड:
db.data.aggregate([
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
result: { $concatArrays: [ "$a", "$b" ] }
}
}
])
परिणाम:
{ "result" : null }
अन्य डेटा प्रकार
$concatArrays
. को प्रदान किया गया प्रत्येक व्यंजक कोई भी मान्य व्यंजक हो सकता है, जब तक कि वह किसी सरणी में हल हो जाता है।
यदि यह किसी सरणी का समाधान नहीं करता है, तो एक त्रुटि लौटा दी जाती है।
मान लीजिए हमारे पास निम्नलिखित दस्तावेज़ हैं:
{ "_id" : 4, "a" : [ 1, 2, 3 ], "b" : 4 }
यदि हम a
. को संयोजित करने का प्रयास करते हैं तो यहां क्या होता है और b
फ़ील्ड:
db.data.aggregate([
{ $match: { _id: 4 } },
{ $project: {
_id: 0,
result: { $concatArrays: [ "$a", "$b" ] }
}
}
])
परिणाम:
Error: command failed: { "ok" : 0, "errmsg" : "$concatArrays only supports arrays, not double", "code" : 28664, "codeName" : "Location28664" } : 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
इस उदाहरण में मैंने एक सरणी को डबल के साथ संयोजित करने का प्रयास किया लेकिन मुझे एक त्रुटि मिली जो बताती है कि $concatArrays केवल सरणी का समर्थन करता है, डबल नहीं ।