MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडीबी $concatArrays

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 केवल सरणी का समर्थन करता है, डबल नहीं


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:उप-दस्तावेज़ को ऊपर करें

  2. मोंगो एम्बेडेड दस्तावेज़ को सरणी में बदलें

  3. स्प्रिंग डेटा मोंगोडब - 'कर्सर' विकल्प की आवश्यकता है

  4. मैं MongoDB का उपयोग करने से अधिक/कम कैसे करूं?

  5. MongoDb . में 15 मिनट के समय अंतराल से समूह परिणाम