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

मोंगोडीबी $ln

MongoDB में, $ln एकत्रीकरण पाइपलाइन ऑपरेटर प्राकृतिक लघुगणक की गणना करता है (ln ) किसी संख्या का और परिणाम को दोहरे के रूप में लौटाता है।

सिंटैक्स

वाक्य रचना इस प्रकार है:

{ $ln: <number> }

जहां <number> कोई भी मान्य व्यंजक हो सकता है जो एक गैर-ऋणात्मक संख्या का समाधान करता है।

उदाहरण

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

{ "_id" : 1, "data" : 0.5 }
{ "_id" : 2, "data" : 20 }
{ "_id" : 3, "data" : 200 }

हम $ln . का उपयोग कर सकते हैं data . का प्राकृतिक लघुगणक लौटाने के लिए ऑपरेटर फ़ील्ड:

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

परिणाम:

{ "data" : 0.5, "result" : -0.6931471805599453 }
{ "data" : 20, "result" : 2.995732273553991 }
{ "data" : 200, "result" : 5.298317366548036 }

ऐसा करने का दूसरा तरीका $log . का उपयोग करना होता Math.E . के दूसरे तर्क के साथ संचालिका . MongoDB देखें $log उदाहरण के लिए।

प्राकृतिक लघुगणक

किसी संख्या का प्राकृतिक लघुगणक गणितीय स्थिरांक e के आधार पर उसका लघुगणक है , जहां एक अपरिमेय और पारलौकिक संख्या है जो 2.7182818284590452353602874713527 से शुरू होती है और हमेशा के लिए जारी रहती है।

गणितीय स्थिरांक e इसे यूलर संख्या भी कहते हैं।

जावास्क्रिप्ट में, हम Math.E . का उपयोग कर सकते हैं e . का प्रतिनिधित्व करने के लिए . इसलिए हम e . का प्राकृतिक लघुगणक प्राप्त कर सकते हैं Math.E . का उपयोग करके $ln . का उपयोग करते समय तर्क के रूप में ।

मान लीजिए हमारे पास इस तरह का एक दस्तावेज़ है:

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

डेटा फ़ील्ड में e . होता है 15 दशमलव स्थानों तक।

यह उदाहरण e . के प्राकृतिक लघुगणक को वापस करने के दो तरीकों का उपयोग करता है :

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 4 ] } } },
    {
      $project:
        { 
          _id: 0,
          e_1: { $ln: [ "$data" ] },
          e_2: { $ln: [ Math.E ] }
        }
    }
  ]
)

परिणाम:

{ "e_1" : 1, "e_2" : 1 }

पहला परिणाम दस्तावेज़ से डेटा का उपयोग करता है। दूसरे परिणाम के लिए, हम Math.E . का उपयोग करते हैं e generate उत्पन्न करने के लिए .

किसी भी तरह से, परिणाम 1 . है ।

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

जैसा कि बताया गया है, $ln ऑपरेटर किसी भी वैध अभिव्यक्ति को स्वीकार करता है जो एक गैर-ऋणात्मक संख्या को हल करता है। उस सीमा से बाहर के मान त्रुटि उत्पन्न करेंगे।

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

{ "_id" : 5, "data" : -20 }

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

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

परिणाम:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "$ln's argument must be a positive number, but is -20",
	"code" : 28766,
	"codeName" : "Location28766"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:639:17
[email protected]/mongo/shell/assert.js:729:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1058:12
@(shell):1:1

गलत डेटा प्रकार

गलत डेटा प्रकार प्रदान करने से भी त्रुटि होगी।

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

{ "_id" : 6, "data" : "Ten" }

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

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

परिणाम:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "$ln only supports numeric types, not string",
	"code" : 28765,
	"codeName" : "Location28765"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:639:17
[email protected]/mongo/shell/assert.js:729:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1058:12
@(shell):1:1

हमने एक स्ट्रिंग प्रदान की है, और इसलिए त्रुटि संदेश हमें बताता है कि $ln only supports numeric types, not string

शून्य मान

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

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

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

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

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

परिणाम:

{ "data" : null, "result" : null }

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

NaN मान

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

उदाहरण:

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

परिणाम:

{ "data" : 0.5, "result" : NaN }

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

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

उदाहरण:

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

परिणाम:

{ "data" : 0.5, "result" : null }

इस मामले में हमने $ln . लागू करने का प्रयास किया age . नामक फ़ील्ड के सामने , लेकिन वह फ़ील्ड दस्तावेज़ में मौजूद नहीं है, और इसलिए हमें null . मिलता है ।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. कैसे एक एम्बेडेड सरणी में एक अद्यतन के बाद नया मान वापस पाने के लिए?

  2. MongoDB के लिए टेस्ट डेटा बनाना

  3. MongoDB साझा क्लस्टर का समस्या निवारण

  4. $unset खाली है। आपको इस प्रकार एक फ़ील्ड निर्दिष्ट करना होगा:{$unset:{<फ़ील्ड>:...}}

  5. वैंप पर MongoDb PHP ड्राइवर इंस्टॉलेशन समस्या