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

मोंगोडीबी $atan2

MongoDB में, $atan2 एग्रीगेशन पाइपलाइन ऑपरेटर एक मान के आर्कटेंगेंट (उलटा स्पर्शरेखा) को दूसरे से विभाजित करके लौटाता है।

आप एक सरणी में दो मान प्रदान करते हैं। $atan2 . को प्रदान किए गए दो मानों में से प्रत्येक कोई भी मान्य व्यंजक हो सकता है जो किसी संख्या का समाधान करता हो।

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

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

उदाहरण

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

{ "_id" :1, "a" :2, "b" :3 }

हम $atan2 . का उपयोग कर सकते हैं ऑपरेटर a . की चाप स्पर्शरेखा लौटाने के लिए b . से विभाजित फ़ील्ड फ़ील्ड:

db.data.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        arctangent: { $atan2: [ "$a", "$b" ] }
      }
    }
  ]
) 

परिणाम:

{ "arctangent" :0.5880026035475675 }

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

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

उदाहरण:

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

परिणाम:

{ "रेडियन" :0.5880026035475675, "डिग्री" :33.690067525979785 }

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

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

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

यह तब भी होता है जब व्यंजकों में से केवल एक ही 128-बिट दशमलव होता है।

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

{ "_id" : 2, "a" : NumberDecimal("1.1301023541559787031443874490659"), "b" : NumberDecimal("2.1301023541559787031443874490659") }
{ "_id" : 3, "a" : 2, "b" : NumberDecimal("2.1301023541559787031443874490659") }
{ "_id" : 4, "a" : NumberDecimal("2.1301023541559787031443874490659"), "b" : 2 } 

चलिए $atan2 चलाते हैं उन दस्तावेजों के खिलाफ ऑपरेटर:

db.data.aggregate(
  [
    { $match: { _id: { $in: [ 2, 3, 4 ] } } },
    { $project: { 
        _id: 0,
        arctangent: { $atan2: [ "$a", "$b" ] }
      }
    }
  ]
) 

परिणाम:

{ "arctangent" :NumberDecimal("0.4877792766738730791507215461936449") }{ "arctangent" :NumberDecimal("0.7539075768401526572881006364456838") }{ "arctangent" :NumberDecimal("0.81688431055474396") 

सभी मामलों में, आउटपुट 128-बिट दशमलव है।

शून्य मान

शून्य मान null लौटाते हैं $atan2 . का उपयोग करते समय ऑपरेटर। यह सच है, भले ही केवल एक व्यंजक null . हो ।

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

{ "_id" :5, "a" :null, "b" :2 }{ "_id" :6, "a" :2, "b" :null }{ "_id" :7, "a " :2, "null" :null }

चलिए $atan2 चलाते हैं उन दस्तावेजों के खिलाफ ऑपरेटर:

db.data.aggregate(
  [
    { $match: { _id: { $in: [ 5, 6, 7 ] } } },
    { $project: { 
        _id: 0,
        arctangent: { $atan2: [ "$a", "$b" ] }
      }
    }
  ]
) 

परिणाम:

{ "arctangent" :null }{ "arctangent" :null }{ "arctangent" :null }

हम देख सकते हैं कि परिणाम null है सभी मामलों में।

NaN मान

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

उदाहरण:

db.data.aggregate(
  [
    { $match: { _id: { $in: [ 2, 3, 4 ] } } },
    { $project: { 
        _id: 0,
        arctangent: { $atan2: [ "$a" * 1, "$b" ] }
      }
    }
  ]
) 

परिणाम:

{ "arctangent" :NumberDecimal("NaN") }{ "arctangent" :NumberDecimal("NaN") }{ "arctangent" :NaN }

आइए इसे थोड़ा बदल दें, ताकि हम b field फ़ील्ड को गुणा करें फ़ील्ड के बजाय a

db.data.aggregate(
  [
    { $match: { _id: { $in: [ 2, 3, 4 ] } } },
    { $project: { 
        _id: 0,
        arctangent: { $atan2: [ "$a", "$b" * 1 ] }
      }
    }
  ]
) 

परिणाम:

{ "arctangent" :NumberDecimal("NaN") }{ "arctangent" :NaN }{ "arctangent" :NumberDecimal("NaN") }

और अब दोनों क्षेत्रों को गुणा करते हैं:

db.data.aggregate(
  [
    { $match: { _id: { $in: [ 2, 3, 4 ] } } },
    { $project: { 
        _id: 0,
        arctangent: { $atan2: [ "$a" * 1, "$b" * 1 ] }
      }
    }
  ]
) 

परिणाम:

{ "arctangent" :NaN }{ "arctangent" :NaN }{ "arctangent" :NaN }

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

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

उदाहरण:

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

परिणाम:

{ "result" :null }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडीबी $दौर

  2. MongoDB - एक दस्तावेज़ अपडेट करें

  3. MongoDB के साथ उप-दस्तावेज़ों का चयन कैसे करें

  4. एसक्यूएल आरपीएडी ()

  5. मोंगो में डेटाबेस बनाना:कनेक्ट नहीं हो सकता, कनेक्ट विफल हो गया