MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Operator Kueri $type MongoDB

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:

  • double
  • 32-bit integer
  • 64-bit integer
  • decimal

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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana saya bisa mengatur MongoDB di server Node.js menggunakan node-mongodb-native di lingkungan EC2?

  2. MongoDB:Hitung waktu diam antara setiap perubahan nilai status

  3. Mongodb tidak dapat memulai

  4. Mengambil HTML dari MongoDB untuk digunakan di Template

  5. Cara menggunakan tipe desimal di MongoDB