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

MongoDB $प्रथम एकत्रीकरण पाइपलाइन ऑपरेटर

MongoDB 4.4 ने $first . पेश किया एकत्रीकरण पाइपलाइन ऑपरेटर।

यह ऑपरेटर किसी सरणी में पहला तत्व लौटाता है।

उदाहरण

मान लीजिए कि हमारे पास निम्नलिखित दस्तावेजों के साथ खिलाड़ियों नामक एक संग्रह है:

{ "_id" : 1, "player" : "Homer", "scores" : [ 1, 5, 3 ] }
{ "_id" : 2, "player" : "Marge", "scores" : [ 8, 17, 18 ] }
{ "_id" : 3, "player" : "Bart", "scores" : [ 15, 11, 8 ] }

हम देख सकते हैं कि प्रत्येक दस्तावेज़ में एक scores होता है फ़ील्ड जिसमें एक सरणी है।

हम $first . का उपयोग कर सकते हैं उन सरणियों में से प्रत्येक के पहले तत्व को वापस करने के लिए।

उदाहरण:

db.players.aggregate([ 
  {
    $project: {
        "firstScore": { 
          $first: "$scores" 
        }
    }
  } 
])

परिणाम:

{ "_id" : 1, "firstScore" : 1 }
{ "_id" : 2, "firstScore" : 8 }
{ "_id" : 3, "firstScore" : 15 }

हम देख सकते हैं कि प्रत्येक दस्तावेज़ के लिए सरणी का पहला तत्व लौटा दिया गया था।

यह $arrayElemAt . का उपयोग करने के बराबर है शून्य के मान वाला ऑपरेटर (0 ):

db.players.aggregate([
  {
    $project: {
      "firstScore": { $arrayElemAt: [ "$scores", 0 ] }
    }
  }
])

खाली सरणी

यदि आप एक खाली सरणी प्रदान करते हैं, $first कोई मान नहीं लौटाएगा।

मान लीजिए कि हम अपने संग्रह में निम्नलिखित दस्तावेज़ सम्मिलित करते हैं:

{ "_id" : 4, "player" : "Farnsworth", "scores" : [ ] }

आइए कोड को फिर से चलाएं:

db.players.aggregate([ 
  {
    $project: {
        "firstScore": { 
          $first: "$scores" 
        }
    }
  } 
])

परिणाम:

{ "_id" : 1, "firstScore" : 1 }
{ "_id" : 2, "firstScore" : 8 }
{ "_id" : 3, "firstScore" : 15 }
{ "_id" : 4 }

इस मामले में, दस्तावेज़ 4 ने सरणी के लिए कोई मान नहीं लौटाया। वास्तव में, इसने फ़ील्ड का नाम भी नहीं लौटाया।

शून्य और अनुपलब्ध मान

यदि ऑपरेंड शून्य या अनुपलब्ध है, तो $first रिटर्न null

मान लीजिए कि हम निम्नलिखित दस्तावेज़ सम्मिलित करते हैं:

{ "_id" : 5, "player" : "Meg", "scores" : null }

आइए कोड को फिर से चलाएं:

db.players.aggregate([ 
  {
    $project: {
        "firstScore": { 
          $first: "$scores" 
        }
    }
  } 
])

परिणाम:

{ "_id" : 1, "firstScore" : 1 }
{ "_id" : 2, "firstScore" : 8 }
{ "_id" : 3, "firstScore" : 15 }
{ "_id" : 4 }
{ "_id" : 5, "firstScore" : null }

इस बार इसने null . के मान के साथ फ़ील्ड लौटा दी .

अमान्य ऑपरेंड

$first . के लिए संकार्य एक सरणी, अशक्त, या अनुपलब्ध को हल करना चाहिए। अमान्य ऑपरेंड प्रदान करने से त्रुटि होती है।

इसे प्रदर्शित करने के लिए, आइए $first . का उपयोग करने का प्रयास करें player . के विरुद्ध फ़ील्ड (जो एक सरणी नहीं है):

db.players.aggregate([ 
  {
    $project: {
        "firstPlayer": { 
          $first: "$player" 
        }
    }
  } 
])

परिणाम:

Error: command failed: {
	"ok" : 0,
	"errmsg" : "$first's argument must be an array, but is string",
	"code" : 28689,
	"codeName" : "Location28689"
} : aggregate failed :
example@sqldat.com/mongo/shell/utils.js:25:13
example@sqldat.com/mongo/shell/assert.js:18:14
example@sqldat.com/mongo/shell/assert.js:618:17
example@sqldat.com/mongo/shell/assert.js:708:16
example@sqldat.com/mongo/shell/db.js:266:5
example@sqldat.com/mongo/shell/collection.js:1046:12
@(shell):1:1

जैसा कि अपेक्षित था, इसने एक त्रुटि लौटा दी।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. अत्यधिक उपलब्ध ओपन सोर्स डेटाबेस वातावरण कैसे डिज़ाइन करें

  2. मोंगोडब स्थानीय सर्वर शुरू करने में असमर्थ

  3. ब्राउज़र के माध्यम से मोंगोडब से कनेक्ट हो रहा है?

  4. नेवला स्कीमा में सरणी आकार के लिए सीमा कैसे निर्धारित करें?

  5. ओपन सोर्स डेटाबेस को प्रबंधित करने का नया तरीका