MongoDB में, $pow
एकत्रीकरण पाइपलाइन ऑपरेटर निर्दिष्ट घातांक के लिए एक संख्या बढ़ाता है और परिणाम देता है
$pow
एक सरणी में आपूर्ति की गई दो अभिव्यक्तियों को स्वीकार करता है। पहला एक संख्या है, और दूसरा घातांक है। दोनों कोई भी मान्य व्यंजक हो सकते हैं, जब तक कि वे किसी संख्या का समाधान करते हैं।
उदाहरण
मान लीजिए हमारे पास test
. नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:
{ "_id" : 1, "data" : 10 } { "_id" : 2, "data" : -3 } { "_id" : 3, "data" : 0 } { "_id" : 4, "data" : null }
हम $pow
. का उपयोग कर सकते हैं data
को बढ़ाने के लिए ऑपरेटर निर्दिष्ट घातांक द्वारा फ़ील्ड:
db.test.aggregate(
[
{ $project: {
_id: 0,
result: { $pow: [ "$data", 3 ] }
}
}
]
)
परिणाम:
{ "result" : 1000 } { "result" : -27 } { "result" : 0 } { "result" : null }
इस मामले में, मैंने data
. का इस्तेमाल किया संख्या के रूप में फ़ील्ड, और 3
प्रतिपादक के रूप में। इसलिए, प्रत्येक दस्तावेज़ का अपना data
था 3 की शक्ति द्वारा उठाया गया क्षेत्र।
हम देख सकते हैं कि null
मान लौटाते हैं null
।
परिणाम आमतौर पर इनपुट के समान प्रकार का होता है। हालाँकि, इस नियम के अपवाद हैं। विशेष रूप से:
- एक 32-बिट पूर्णांक को 64-बिट पूर्णांक में परिवर्तित किया जाएगा यदि परिणाम 64-बिट पूर्णांक के रूप में प्रदर्शित करने योग्य है।
- यदि परिणाम 64-बिट पूर्णांक के रूप में प्रदर्शित करने योग्य नहीं है, तो 32-बिट पूर्णांक को दोहरे में बदल दिया जाएगा।
- यदि परिणाम 64-बिट पूर्णांक के रूप में प्रदर्शित करने योग्य नहीं है, तो 64-बिट पूर्णांक को डबल में बदल दिया जाएगा।
नकारात्मक घातांक
आप शून्य नहीं बढ़ा सकते (0
) एक नकारात्मक घातांक के लिए।
उदाहरण:
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
result: { $pow: [ "$data", -3 ] }
}
}
]
)
परिणाम:
uncaught exception: Error: command failed: { "ok" : 0, "errmsg" : "$pow cannot take a base of 0 and a negative exponent", "code" : 28764, "codeName" : "Location28764" } : 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
त्रुटि स्पष्ट रूप से बताती है कि "$pow 0 का आधार और एक नकारात्मक घातांक नहीं ले सकता ".
हालांकि, अगर हम दस्तावेज़ 3 को बाहर कर देते हैं, तो हमें अब यह त्रुटि नहीं मिलेगी:
db.test.aggregate(
[
{ $match: { _id: { $nin: [ 3 ] } } },
{ $project: {
result: { $pow: [ "$data", -3 ] }
}
}
]
)
परिणाम:
{ "_id" : 1, "result" : 0.001 } { "_id" : 2, "result" : -0.037037037037037035 } { "_id" : 4, "result" : null }
NaN मान
अगर तर्क NaN
. का समाधान करता है , $pow
रिटर्न NaN
।
उदाहरण:
db.test.aggregate(
[
{ $project: {
_id: 0,
result: { $pow: [ "$data" * 1, 3 ] }
}
}
]
)
परिणाम:
{ "result" : NaN } { "result" : NaN } { "result" : NaN } { "result" : NaN }
गैर-मौजूद फ़ील्ड
अगर $pow
ऑपरेटर को उस फ़ील्ड के विरुद्ध लागू किया जाता है जो मौजूद नहीं है, null
लौटा दिया गया है।
उदाहरण:
db.test.aggregate(
[
{ $project: {
_id: 0,
result: { $pow: [ "$beer", 3 ] }
}
}
]
)
परिणाम:
{ "result" : null } { "result" : null } { "result" : null } { "result" : null }
शून्य घातांक
हम पहले ही देख चुके हैं कि एक null
मान रिटर्न null
. यह null
providing प्रदान करते समय भी सही होता है घातांक के रूप में।
उदाहरण:
db.test.aggregate(
[
{ $project: {
_id: 0,
result: { $pow: [ "$data", null ] }
}
}
]
)
परिणाम:
{ "result" : null } { "result" : null } { "result" : null } { "result" : null }