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
जैसा कि अपेक्षित था, इसने एक त्रुटि लौटा दी।