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

MongoDB में लिफ्ट स्टोर BigDecimal

MongoDB v2.6 के अनुसार कोई निश्चित स्थान दशमलव प्रकार नहीं है। डेटा को एक अलग प्रकार के क्षेत्र में सहेजना होगा और एप्लिकेशन को हर बार अनुवाद करना होगा।

संभावित रूप से मध्यस्थ libs आपके आवेदन के बजाय यह अनुवाद कर सकते हैं। मुझे लगता है कि net.liftweb.record नहीं है।

यदि प्रश्न में फ़ील्ड के लिए एक डबल प्रकार पर्याप्त होगा, तो मैं सरलता के लिए उसमें बदलने की अनुशंसा करता हूं। लेकिन यह मानते हुए कि आप अच्छे कारणों से BigDecimal का उपयोग कर रहे हैं, प्रसिद्ध समाधान हैं। ये हैं:

(1) इसे एक स्ट्रिंग के रूप में संग्रहीत करें . आपके पास कोई मनमानी सटीकता हो सकती है। लेकिन सटीक मान मिलान के लिए सॉर्टिंग या क्वेरी करना केवल तभी काम करेगा जब आप बाईं ओर शून्य के साथ हर बार एक निश्चित लंबाई तक पैड करते हैं। फिर भी सकारात्मक और नकारात्मक संख्या दो अलग-अलग श्रेणियां हैं जो क्रमबद्ध हैं। सही संख्यात्मक छँटाई के लिए नेगेटिव को रिवर्स में सॉर्ट करने की आवश्यकता होती है। आदेश का एक उदाहरण MongoDB स्वाभाविक रूप से इन शून्य-गद्देदार स्ट्रिंग संख्याओं को वापस कर देगा:

"-0000054321.9876"
"-0000100322"
"0000054321.9876"
"0000100322"

मेरा मानना ​​है कि BigDecimal प्रकार में एक स्ट्रिंग मान से एक कंस्ट्रक्टर होता है, इसलिए आपके एप्लिकेशन के अनुवाद फ़ंक्शन में इसे लागू करना सबसे आसान हो सकता है।

(2) इसे एक शिफ्ट किए गए लंबे (Int64) के रूप में संग्रहीत करें . छँटाई कार्य, कम डिस्क स्थान का उपयोग किया जाता है, नकारात्मक बनाम कोई समस्या नहीं है। सकारात्मक। मूल्यों को एक निश्चित एकाधिक द्वारा स्थानांतरित करने की आवश्यकता होती है जो सीधे डेटाबेस को देखते समय थोड़ा अपठनीय बनाता है। संपूर्ण संग्रह में सभी मूल्यों के लिए सटीकता समान होनी चाहिए- वित्तीय उपयोग के मामलों के लिए ठीक है; कुछ वैज्ञानिक उपयोग के मामलों के लिए ठीक नहीं है।

(3) संख्याओं के जोड़े के रूप में स्टोर करें , दशमलव बिंदु के दोनों ओर के लिए एक। छँटाई के लिए अतिरिक्त छोटे काम की आवश्यकता होती है। यदि Int32 संख्याओं का उपयोग कर रहे हैं तो सटीकता दशमलव के दोनों ओर 9 अंकों तक सीमित होगी। एक के बजाय डीबी में दो कॉलम देखना निश्चित रूप से थोड़ा और काम है।

स्कैला कोड उदाहरण के लिए मैंने पाया कि मोंगोडीबी प्रोजेक्ट के लिए रिएक्टिव ड्राइवर ने बिगडेसिमल के लिए तीन क्रमांकन समाधान . पहला डबल का उपयोग करता है; बाद के दो अभी तक एक और दृष्टिकोण लेते हैं- BigDecimal मान के लिए एक संपूर्ण उप-दस्तावेज़ बनाएं। मुझे संदेह है कि उप-दस्तावेजों में लिपटे मूल्यों को क्वेरी करने की कोशिश करना मुश्किल होगा।

एक और वास्तविक जीवन का मामला एक eBay देव टीम ब्लॉग (मॉर्फिया/जावा) से

पी.एस. शायद मोंगोडीबी भविष्य में दशमलव प्रकार जोड़ देगा। इसके लिए एक खुला सुविधा अनुरोध है जिसे आप देख/अपवोट कर सकते हैं - https://jira। mongodb.org/browse/SERVER-1393




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB प्रतिकृति दिल की धड़कन अनुरोध समय पार हो गया

  2. मोंगो सी # ड्राइवर का उपयोग करके, इसे स्टोर करने के लिए कस्टम ऑब्जेक्ट की सरणी को क्रमबद्ध कैसे करें?

  3. नेवला उन सभी दस्तावेज़ों को ढूंढता है जहाँ array.length 0 से अधिक है और डेटा को सॉर्ट करें

  4. मैं नेवला मॉडल 2 ऐप्स के बीच कैसे साझा कर सकता हूं?

  5. उल्का में बाहरी MongoDB उदाहरण से कैसे जुड़ें?