Di MongoDB, Anda dapat menggunakan $type operator kueri elemen untuk memfilter kumpulan dokumen berdasarkan tipe BSON. Ini mengembalikan hanya dokumen-dokumen yang memiliki jenis BSON tertentu di bidang tertentu.
Anda memberikan bidang dan jenis BSON, dan $type akan mengembalikan semua dokumen yang cocok.
Contoh
Misalkan kita memasukkan dokumen berikut ke dalam koleksi yang disebut employees :
db.employees.insertMany([
{ _id: 1, name: "Sandy", remuneration: "Too Much!!!" },
{ _id: 2, name: "Sarah", remuneration: NumberInt(128000) },
{ _id: 3, name: "Fritz", remuneration: 25000 },
{ _id: 4, name: "Chris", remuneration: NumberDecimal("45000.75") },
{ _id: 5, name: "Beck", remuneration: "10% commission" },
{ _id: 6, name: "Peter", remuneration: "70K" },
{ _id: 7, name: "Homer", remuneration: null },
]) Setiap dokumen berisi karyawan beserta remunerasi karyawan tersebut.
Namun, sementara setiap dokumen memiliki remuneration bidang, kita dapat melihat bahwa tidak ada konsistensi di seluruh dokumen sehubungan dengan jenis BSON yang digunakan di bidang ini.
Kita dapat menggunakan $type operator kueri untuk mengembalikan hanya dokumen-dokumen yang remuneration bidang adalah jenis BSON tertentu.
Contoh:
db.employees.find( { remuneration: { $type: "double" } } ) Hasil:
{ "_id" :3, "name" :"Fritz", "remunerasi" :25000 }
Dalam hal ini, hanya satu dokumen yang memiliki tipe BSON ganda dalam remuneration lapangan.
Mari kita lihat mana yang berisi string:
db.employees.find( { remuneration: { $type: "string" } } ) Hasil:
{ "_id" :1, "name" :"Sandy", "remuneration" :"Terlalu Banyak!!!" }{ "_id" :5, "name" :"Beck", "remuneration" :"10% komisi" }{ "_id" :6, "name" :"Peter", "remuneration" :"70K" } number Alias
Anda dapat menggunakan number alias sebagai cara mudah untuk mengembalikan dokumen yang berisi tipe numerik.
Alias nomor cocok dengan jenis BSON berikut:
double32-bit integer64-bit integerdecimal
Contoh:
db.employees.find( { remuneration: { $type: "number" } } ) Hasil:
{ "_id" :2, "name" :"Sarah", "remuneration" :128000 }{ "_id" :3, "name" :"Fritz", "remuneration" :25000 }{ "_id" :4, "nama" :"Chris", "remunerasi" :NumberDecimal("45000.75") } Periksa Beberapa Jenis
Anda dapat memeriksa beberapa jenis dengan menyediakan larik jenis BSON.
Contoh:
db.employees.find( {
remuneration: { $type: ["double", "int", "null"] }
} ) Hasil:
{ "_id" :2, "name" :"Sarah", "remuneration" :128000 }{ "_id" :3, "name" :"Fritz", "remuneration" :25000 }{ "_id" :7, "name" :"Homer", "remuneration" :null } Filter menurut Nomor
Setiap jenis BSON memiliki nomor dan alias yang sesuai (seperti yang dijelaskan dalam dokumentasi MongoDB).
Contoh sebelumnya menggunakan alias. Sebagai alternatif, Anda dapat menggunakan nomor tersebut alih-alih alias tipe BSON.
Contoh:
db.employees.find( {
remuneration: { $type: [1, 16, 10] }
} ) Hasil:
{ "_id" :2, "name" :"Sarah", "remuneration" :128000 }{ "_id" :3, "name" :"Fritz", "remuneration" :25000 }{ "_id" :7, "name" :"Homer", "remuneration" :null }
Dalam hal ini, saya memberikan array angka yang sesuai dengan double , int , dan null (yang mengembalikan hasil yang sama seperti contoh sebelumnya).
Sebelum MongoDB 3.2, hanya nomor yang diterima dengan $type operator kueri. Alias string hanya diterima sejak MongoDB 3.2.
Mengembalikan Jenis Bidang
Ada juga $type operator pipa agregasi yang memungkinkan Anda mendapatkan jenis nilai bidang BSON.