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

MongoDB नंबर फ़ील्ड मेरे द्वारा इनपुट किए गए नंबर के साथ सम्मिलित या अपडेट नहीं करेगा

क्षमा करें, मुझे शुरुआत में आपका प्रश्न समझ में नहीं आया और इसलिए गलत उत्तर दिया (धन्यवाद कैबबंगा इसे इंगित करने के लिए)। तो यहाँ एक सही है।

Mongoshell विभिन्न डेटा प्रकारों का समर्थन करता है . और जब आप इसे दर्ज करते हैं तो यह आपके डेटाटाइप का अनुमान लगाने का प्रयास करता है। तो आप अपना बड़ा नंबर दर्ज करें:138548488276343678 . ध्यान दें कि यह बड़ा है तो 2^31-1 जो ​​कि 32-बिट पूर्णांक के लिए अधिकतम है। तो यह इसे एक फ्लोट के रूप में मानता है और क्योंकि फ्लोट्स को ठीक से संग्रहीत नहीं किया जाता है, यह इसे थोड़ा सा संशोधित करता है। यही कारण है कि आपकी संग्रहीत संख्या लगभग समान है, लेकिन थोड़ा अलग है (यह अंतर 8 से कम होगा)। लेकिन आप इस नंबर को सटीक और मोंगो समर्थन 64-बिट पूर्णांक (जो आपके पूर्णांक में फिट बैठता है) को स्टोर करना चाहते हैं।

इसलिए आपको यह निर्दिष्ट करने की आवश्यकता है कि आप इसे 64bit पूर्णांक . आप इसे निम्न तरीके से कर सकते हैं:

db.a.insert({
  bound:"latest",
  id: NumberLong("138548488276343678"),  // Note these "". I was not using them and the number was not stored correctly
  complete:false
})

इसके बाद आप अपने दस्तावेज़ को पुनः प्राप्त कर सकते हैं db.a.find() और यह सही होगा। ध्यान दें कि बहुत से ड्राइवरों को समान समस्याएं होती हैं और इसलिए आपको स्पष्ट रूप से बताना होगा कि आप उन्हें 64 बिट पूर्णांक के रूप में सहेजने जा रहे हैं।

यदि आप _id निर्दिष्ट नहीं कर रहे हैं आपके द्वारा बनाए जा रहे दस्तावेज़ के लिए, mongodb _id बनाता है अपने आप में क्षेत्र। आप _id . के बारे में कुछ और पढ़ सकते हैं यहां और आधिकारिक दस्तावेज में ।

यदि आपके पास अपना क्षेत्र है, जिसे आप _id . के रूप में उपयोग करना चाहते हैं , लिखने के बजाय id:138548488276343678 आपको _id : 138548488276343678 write लिखना चाहिए .

पी.एस. यह भी क्योंकि मैं देख रहा हूं कि आप काफी बड़ी संख्या का उपयोग कर रहे हैं, ध्यान रखें कि मोंगोडब में पूर्णांकों को 64-बिट पूर्णांक (जिसका अर्थ है कि यह -2^63 से 2^63 - 1 के बीच है)




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवले के लिए ब्लूबर्ड का प्रयोग करें, मिल गया। बाइंड एक फ़ंक्शन नहीं है

  2. स्प्रिंग डेटा मोंगो - क्वेरी विधियाँ और विशिष्ट क्षेत्र

  3. दूरस्थ नोड से mongodump - तंत्र का उपयोग करके प्रमाणित करने में असमर्थ SCRAM-SHA-256

  4. MongoDB:अपने नाम में जगह रखने वाली एक कुंजी को क्वेरी करें

  5. ऑब्जेक्ट आईडी पर एक सरणी में $ लुकअप