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

मोंगोडीबी $asin

MongoDB में, $asin एग्रीगेशन पाइपलाइन ऑपरेटर रेडियन में मापा गया मान का आर्क्साइन (उलटा साइन) लौटाता है।

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

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

उदाहरण

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

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

हम $asin . का उपयोग कर सकते हैं data . के आर्ककोसाइन को वापस करने के लिए ऑपरेटर फ़ील्ड:

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

परिणाम:

{ "arcsine" : 0.5235987755982988 }

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

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

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

उदाहरण:

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

परिणाम:

{ "radians" : 0.5235987755982988, "degrees" : 29.999999999999996 }

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

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

अगर एक्सप्रेशन $asin . को दिया गया है 128-बिट दशमलव है, तो परिणाम 128-बिट दशमलव में लौटा दिया जाता है।

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

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

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

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

परिणाम:

{ "arcsine" : NumberDecimal("0.1304722105697547116336288178856500") }

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

शून्य मान

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

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

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

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

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

परिणाम:

{ "arcsine" : null }

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

NaN मान

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

उदाहरण:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        arcsine: { $asin: 1 * "String" }
      }
    }
  ]
)

परिणाम:

{ "arcsine" : NaN }

इस मामले में व्यंजक ने एक संख्या को एक स्ट्रिंग से गुणा करने का प्रयास किया, जिसके परिणामस्वरूप NaN लौटाया जा रहा है।

इन्फिनिटी

अगर तर्क Infinity . का समाधान करता है या -Infinity , $asin ऑपरेटर एक त्रुटि देता है।

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

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

चलिये $asin डेटा फ़ील्ड के विरुद्ध:

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

परिणाम:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "cannot apply $asin 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

mongo . में मुझे यही त्रुटि मिलती है उस कोड को चलाते समय खोल।

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

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

उदाहरण:

db.test.aggregate(
  [
    { $match: { _id: 4 } },
    { $project: { 
        _id: 0,
        arcsine: { $asin: "$wrong" }
      }
    }
  ]
)

परिणाम:

{ "arcsine" : null }

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

$asin . को सीमा से बाहर मान प्रदान करना परिणामस्वरूप त्रुटि होगी। हम पहले ही देख चुके हैं कि जब हम Infinity . प्रदान करते हैं तो क्या होता है करने के लिए $asin . आइए अब पृथ्वी के अधिक डाउन टू अर्थ मान का उपयोग करें, जैसे मान लीजिए, 2

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

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

अब चलिए $asin चलाते हैं data के विरुद्ध फ़ील्ड:

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

परिणाम:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "cannot apply $asin 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

जैसा कि त्रुटि संदेश इंगित करता है, मान -1 . के बीच होना चाहिए और 1


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेस्टेड सरणियों को अद्यतन करने के लिए स्थितीय `$` ऑपरेटर का एकाधिक उपयोग

  2. MongoDB एकत्रीकरण फ्रेमवर्क - गतिशील क्षेत्र का नाम बदलें

  3. Mongoose कॉलबैक में कौन से पैरामीटर पास किए जाते हैं

  4. MongoDB में किसी विशिष्ट दस्तावेज़ के किसी सरणी के अंदर, विशिष्ट एम्बेडेड दस्तावेज़ का मान कैसे अपडेट करें?

  5. MongoDB सरणी से विशेष तत्व प्राप्त करें