Hanya ada satu tipe numerik
dalam JavaScript (Number
), yang direpresentasikan dalam biner sebagai angka floating point IEEE 754 (ganda).
Dalam spesifikasi BSON ini akan direpresentasikan sebagai ganda (tipe 1), jadi Anda harus dapat menemukan dengan:
db.people.find({name: { $type: 1 }})
Ada beberapa mongo
shell helper jika Anda ingin memasukkan tipe data
yang berbeda :
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)
Jadi misalnya:
db.people.insert({ name: 'default', num: 42 })
db.people.insert({ name: 'NumberLong', num: NumberLong(42) })
db.people.insert({ name: 'NumberInt', num: NumberInt(42) })
Representasi numerik yang berbeda akan tetap cocok jika Anda melakukan find()
pada angka yang dapat direpresentasikan dalam berbagai format (yaitu integer 32-bit juga dapat direpresentasikan sebagai double atau int64).
Misalnya:
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
}
Namun jika Anda menemukan dengan $type
, representasi BSON berbeda:
> 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)
}