MongoDB में, $abs
एग्रीगेशन पाइपलाइन ऑपरेटर किसी संख्या का निरपेक्ष मान लौटाता है।
उदाहरण
मान लीजिए हमारे पास data
. नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{ "_id" : 1, "a" : 20, "b" : -20 }
हम $abs
. का उपयोग कर सकते हैं ऑपरेटर a
. के निरपेक्ष मान लौटाने के लिए और b
फ़ील्ड।
db.data.aggregate(
[
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ "$b" ] }
}
}
]
)
परिणाम:
{ "a" : 20, "b" : 20 }
निरपेक्ष मानों में कोई चिह्न शामिल नहीं है, और इसलिए हम देख सकते हैं कि b
से ऋणात्मक चिह्न हटा दिया गया है मूल्य।
आप किसी संख्या के निरपेक्ष मान को संख्या रेखा पर उस संख्या की शून्य से दूरी मान सकते हैं।
शून्य मान
शून्य मान null
लौटाते हैं $abs
. का उपयोग करते समय ऑपरेटर।
मान लीजिए हम अपने संग्रह में निम्नलिखित दस्तावेज़ जोड़ते हैं:
{ "_id" : 2, "a" : 0, "b" : null }
चलिए $abs
चलाते हैं उस दस्तावेज़ के विरुद्ध ऑपरेटर:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ "$b" ] }
}
}
]
)
परिणाम:
{ "a" : 0, "b" : null }
हम देख सकते हैं कि b
null
. को हल किया गया .
हम यह भी देख सकते हैं कि 0
0
. का समाधान करता है ।
NaN मान
अगर तर्क NaN
. का समाधान करता है , $abs
रिटर्न NaN
।
उदाहरण:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ 1 * "g" ] }
}
}
]
)
परिणाम:
{ "a" : 0, "b" : NaN }
इस मामले में मैंने एक संख्या को एक स्ट्रिंग से गुणा करने का प्रयास किया, जिसके परिणामस्वरूप NaN
लौटाया जा रहा है।
गैर-मौजूद फ़ील्ड
अगर $abs
ऑपरेटर को उस फ़ील्ड के विरुद्ध लागू किया जाता है जो मौजूद नहीं है, null
लौटा दिया गया है।
उदाहरण:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
c: { $abs: [ "$c" ] }
}
}
]
)
परिणाम:
{ "c" : null }
अन्य ऑपरेटरों के साथ संयुक्त
इस उदाहरण में मैं $abs
. को मिलाता हूं $subtract
. के साथ a
. फ़ील्ड के बीच अंतर के परिमाण की गणना करने के लिए और b
:
db.data.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
a: 1,
b: 1,
result: {
$abs: {
$subtract: [ "$a", "$b" ]
}
}
}
}
]
)
परिणाम:
{ "a" : 20, "b" : -20, "result" : 40 }