MongoDB में NumberLong(x) और NumberLong("x") के बीच महत्वपूर्ण अंतर है:
- NumberLong(x): संख्यात्मक मान को JavaScript नंबर के रूप में पार्स करता है, जो 64-बिट फ्लोटिंग-पॉइंट सटीकता सीमा (2^53 - 1) से अधिक होने पर मान को राउंड कर देता है।
- NumberLong("x"): मान को स्ट्रिंग के रूप में पार्स करता है, जिससे 64-बिट पूर्णांक सटीकता बनी रहती है और कोई राउंडिंग नहीं होती।
उदाहरण
> db.demo603.insert({"longValue" : NumberLong(988998985857575789)});
WriteResult({ "nInserted" : 1 })
> db.demo603.insert({"longValueInString" : NumberLong("988998985857575789")});
परिणाम देखें
> db.demo603.find().pretty();
आउटपुट:
{
"_id" : ObjectId("5e9605e5ed011c280a0905d1"),
"longValue" : NumberLong("988998985857575808") // राउंड हो गया
}
{
"_id" : ObjectId("5e9605faed011c280a0905d2"),
"longValueInString" : NumberLong("988998985857575789") // सटीक मान
}
निष्कर्ष: बड़े पूर्णांकों (9,007,199,254,740,991 से अधिक) के लिए हमेशा NumberLong("string") सिंटैक्स का उपयोग करें ताकि सटीकता बनी रहे।