केवल एक अंकीय प्रकार
है जावास्क्रिप्ट में (Number
), जिसे बाइनरी में IEEE 754 फ्लोटिंग पॉइंट नंबर (डबल) के रूप में दर्शाया जाता है।
बीएसओएन स्पेक में इसे डबल (टाइप 1) के रूप में दर्शाया जाएगा, इसलिए आपको इसके साथ खोजने में सक्षम होना चाहिए:
db.people.find({name: { $type: 1 }})
कुछ mongo
हैं शेल हेल्पर्स अगर आप अलग बीएसओएन डेटा प्रकार
डालना चाहते हैं :
42 // Type 1: double (64-bit IEEE 754 floating point, 8 bytes)
NumberInt(42) // Type 16: int32 (32-bit signed integer, 4 bytes)
NumberLong(42) // Type 18: int64 (64-bit signed integer, 8 bytes)
तो उदाहरण के लिए:
db.people.insert({ name: 'default', num: 42 })
db.people.insert({ name: 'NumberLong', num: NumberLong(42) })
db.people.insert({ name: 'NumberInt', num: NumberInt(42) })
यदि आप find()
. करते हैं तो विभिन्न संख्यात्मक अभ्यावेदन अभी भी मेल खाएंगे एक संख्या पर जिसे कई स्वरूपों में दर्शाया जा सकता है (यानी 32-बिट पूर्णांक को दोहरे या int64 के रूप में भी दर्शाया जा सकता है)।
उदाहरण के लिए:
db.people.find({num:42})
{
"_id" : ObjectId("50965aa3038d8c8e85fd3f45"),
"name" : "default",
"num" : 42
}
{
"_id" : ObjectId("50965aa3038d8c8e85fd3f46"),
"name" : "NumberLong",
"num" : NumberLong(42)
}
{
"_id" : ObjectId("50965aa3038d8c8e85fd3f47"),
"name" : "NumberInt",
"num" : 42
}
हालाँकि यदि आप $type
. द्वारा पाते हैं , बीएसओएन प्रतिनिधित्व अलग है:
> db.people.find({num: { $type: 1 }})
{
"_id" : ObjectId("50965aa3038d8c8e85fd3f45"),
"name" : "default",
"num" : 42
}
> db.people.find({num: { $type: 16 }})
{
"_id" : ObjectId("50965aa3038d8c8e85fd3f47"),
"name" : "NumberInt",
"num" : 42
}
> db.people.find({num: { $type: 18 }})
{
"_id" : ObjectId("50965aa3038d8c8e85fd3f46"),
"name" : "NumberLong",
"num" : NumberLong(42)
}