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

मोंगोडीबी $atanh

MongoDB में, $atanh एकत्रीकरण पाइपलाइन ऑपरेटर किसी मान का अतिपरवलयिक चाप स्पर्शरेखा (उलटा अतिपरवलयिक स्पर्शरेखा) लौटाता है।

वापसी मूल्य रेडियन में है।

$atanh किसी भी मान्य व्यंजक को स्वीकार करता है जो -1 . के बीच की किसी संख्या का समाधान करता है और 1

$atanh ऑपरेटर को MongoDB 4.2 में पेश किया गया था।

उदाहरण

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

{ "_id" : 1, "data" : 0.5 }

हम $atanh . का उपयोग कर सकते हैं ऑपरेटर data . के अतिशयोक्तिपूर्ण चाप स्पर्शरेखा को वापस करने के लिए फ़ील्ड:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        hyperbolicArctangent: { $atanh: "$data" }
      }
    }
  ]
)

परिणाम:

{ "hyperbolicArctangent" : 0.5493061443340549 }

डिग्री में बदलें

जैसा कि बताया गया है, $atanh रेडियन में अपना परिणाम देता है। आप $radiansToDegrees . का उपयोग कर सकते हैं यदि आप परिणाम डिग्री में चाहते हैं तो ऑपरेटर।

उदाहरण:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        radians: { $atanh: "$data" },
        degrees: { $radiansToDegrees: { $atanh: "$data" } }
      }
    }
  ]
)

परिणाम:

{ "radians" : 0.5493061443340549, "degrees" : 31.472923730945382 }

इस उदाहरण में, पहला फ़ील्ड परिणाम को रेडियन में प्रस्तुत करता है, और दूसरा फ़ील्ड इसे डिग्री में प्रस्तुत करता है।

128-बिट दशमलव मान

डिफ़ॉल्ट रूप से, $atanh ऑपरेटर मानों को double . के रूप में लौटाता है , लेकिन यह 128-बिट दशमलव के रूप में भी मान लौटा सकता है, जब तक कि व्यंजक 128-बिट दशमलव मान पर हल हो जाता है।

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

{ "_id" : 2, "data" : NumberDecimal("0.1301023541559787031443874490659") }

चलिए $atanh चलाते हैं उस दस्तावेज़ के विरुद्ध ऑपरेटर:

db.test.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        result: { $atanh: "$data" }
      }
    }
  ]
)

परिणाम:

{ "result" : NumberDecimal("0.1308439651155512740523796431117568") }

आउटपुट 128-बिट दशमलव है।

सीमा मान से बाहर

$atanh ऑपरेटर किसी भी मान्य व्यंजक को स्वीकार करता है जो -1 . के बीच की किसी संख्या का समाधान करता है और 1 . उस सीमा से बाहर के मान त्रुटि उत्पन्न करेंगे।

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

{ "_id" : 3, "data" : 2 }

चलिए $atanh चलाते हैं उस दस्तावेज़ के विरुद्ध ऑपरेटर:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        result: { $atanh: "$data" }
      }
    }
  ]
)

परिणाम:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "cannot apply $atanh to 2, value must in [-1,1]",
	"code" : 50989,
	"codeName" : "Location50989"
} : 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

शून्य मान

शून्य मान null लौटाते हैं $atanh . का उपयोग करते समय ऑपरेटर।

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

{ "_id" : 4, "data" : null }

चलिए $atanh चलाते हैं उस दस्तावेज़ के विरुद्ध ऑपरेटर:

db.test.aggregate(
  [
    { $match: { _id: 4 } },
    { $project: { 
        _id: 0,
        result: { $atanh: "$data" }
      }
    }
  ]
)

परिणाम:

{ "result" : null }

हम देख सकते हैं कि परिणाम null है .

NaN मान

अगर तर्क का समाधान NaN . हो जाता है , $atanh रिटर्न NaN

उदाहरण:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        result: { $atanh: 1 * "$data" }
      }
    }
  ]
)

परिणाम:

{ "result" : NaN }

गैर-मौजूद फ़ील्ड

अगर $atanh ऑपरेटर को उस फ़ील्ड के विरुद्ध लागू किया जाता है जो मौजूद नहीं है, null लौटा दिया गया है।

उदाहरण:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        result: { $atanh: "$name" }
      }
    }
  ]
)

परिणाम:

{ "result" : null }

इन्फिनिटी

Infinity प्रदान करना या -Infinity एक सीमा से बाहर त्रुटि लौटाएगा (जैसा कि हमने पहले देखा था)।

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

{ "_id" : 5, "data" : Infinity }

चलिये $atanh फिर से:

db.test.aggregate(
  [
    { $match: { _id: 5 } },
    { $project: { 
        _id: 0,
        result: { $atanh: "$data" }
      }
    }
  ]
)

परिणाम:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "cannot apply $atanh to inf, value must in [-1,1]",
	"code" : 50989,
	"codeName" : "Location50989"
} : 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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब आंतरिक सरणी के लिए नया मान पुश करें - मोंगोडब/php

  2. नेवला का उपयोग करके मोंगोडब में एक दस्तावेज़ कैसे सम्मिलित करें और उत्पन्न आईडी प्राप्त करें?

  3. एक सरणी फ़ील्ड में मानों के आधार पर MongoDB समूह

  4. मैं मोंगोडीबी में एसक्यूएल जॉइन समकक्ष कैसे निष्पादित करूं?

  5. मैं एक नेवला मॉडल में विधियों को कैसे परिभाषित करूं?