MongoDB में, $arrayElemAt
एकत्रीकरण पाइपलाइन ऑपरेटर निर्दिष्ट सरणी अनुक्रमणिका पर तत्व लौटाता है।
यह दो तर्क स्वीकार करता है;
- सरणी
- उस तत्व की अनुक्रमणिका जिसे आप पुनः प्राप्त करना चाहते हैं
उदाहरण
मान लीजिए हमारे पास posts
. नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{ "_id" : 1, "title" : "Hello World!", "body" : "This is a test post for the purposes of testing", "tags" : [ "html", "css", "sql", "xml" ], "status" : null }
इस दस्तावेज़ में, tags
फ़ील्ड में एक सरणी है।
हम $arrayElemAt
. का उपयोग कर सकते हैं एक विशिष्ट सूचकांक पर एक सरणी तत्व वापस करने के लिए ऑपरेटर।
उदाहरण:
db.posts.aggregate([
{
$project: {
"tag": { $arrayElemAt: [ "$tags", 0 ] }
}
}
])
परिणाम:
{ "_id" : 1, "tag" : "html" }
इस मामले में, हम पहला सरणी तत्व लौटाते हैं। सरणी शून्य-आधारित हैं, और इसलिए 0
सरणी में पहले तत्व को संदर्भित करता है।
युक्ति:MongoDB 4.4 से, हम $first
. का भी उपयोग कर सकते हैं सरणी में पहला तत्व वापस करने के लिए ऑपरेटर।
दूसरा तत्व प्राप्त करने का एक उदाहरण यहां दिया गया है:
db.posts.aggregate([
{
$project: {
"tag": { $arrayElemAt: [ "$tags", 1 ] }
}
}
])
परिणाम:
{ "_id" : 1, "tag" : "css" }
सूचकांक के लिए नकारात्मक मान
आप दूसरे तर्क के लिए ऋणात्मक मान प्रदान कर सकते हैं। जब आप ऐसा करते हैं, $arrayElemAt
सरणी के अंत से पीछे की ओर गिना जाता है।
उदाहरण:
db.posts.aggregate([
{
$project: {
"tag": { $arrayElemAt: [ "$tags", -1 ] }
}
}
])
परिणाम:
{ "_id" : 1, "tag" : "xml" }
इस मामले में, हमें सरणी में अंतिम तत्व मिलता है।
MongoDB 4.4 से, हम $last
. का भी उपयोग कर सकते हैं अंतिम सरणी तत्व प्राप्त करने के लिए ऑपरेटर।
अन्य ऑपरेटरों के साथ संयोजन
आप $arrayElemAt
. का उपयोग कर सकते हैं आपको आवश्यक परिणाम देने के लिए अन्य ऑपरेटरों के साथ।
इसे $binarySize
. के साथ संयोजित करने का एक उदाहरण यहां दिया गया है एक विशिष्ट सरणी तत्व के आकार को वापस करने के लिए ऑपरेटर।
db.posts.aggregate([
{
$project: {
"tagsSize": { $binarySize: { $arrayElemAt: [ "$tags", 0 ] } }
}
}
])
परिणाम:
{ "_id" : 1, "tagsSize" : 4 }