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

Operator perbandingan MongoDB dengan null

Detail Sepele

Membaca sumber Mongo terbaru /a> , pada dasarnya ada 2 kasus ketika melakukan perbandingan yang melibatkan null :

  1. Jika jenis kanonis elemen BSON yang dibandingkan berbeda, hanya perbandingan kesetaraan (== , >= , <= ) dari null &undefined akan mengembalikan true; jika tidak, perbandingan apa pun dengan null akan mengembalikan false .
    Catatan: Tidak ada tipe BSON lain yang memiliki tipe kanonik yang sama dengan null .
  2. Jika jenis kanonis sama (yaitu, kedua elemen null ), lalu bandingkan Nilai disebut. Untuk null , ini hanya mengembalikan perbedaan antara kanonik ketik dari kedua elemen BSON dan kemudian melakukan perbandingan yang diminta terhadap 0 .
    Misalnya, null > null akan diterjemahkan menjadi (5-5) > 0 --> False karena tipe kanonik dari null adalah 5.
    Demikian pula, null < null akan diterjemahkan menjadi (5-5) < 0 --> False .

Ini berarti null hanya bisa sama dengan null atau undefined . Perbandingan lain yang melibatkan null akan selalu mengembalikan false .

Apakah ini Bug?

Jawaban yang Diperbarui:

Dokumentasi untuk operator perbandingan ($gt , $lt ) referensi dokumentasi yang awalnya Anda tautkan , yang menyiratkan bahwa operator perbandingan harus bekerja dengan null . Selanjutnya, pengurutan kueri (yaitu , db.find().sort() ) memang ikuti secara akurat perilaku Perbandingan/Urutkan yang didokumentasikan.

Ini, setidaknya, tidak konsisten. Saya rasa sebaiknya mengirimkan laporan bug ke situs JIRA MongoDB .

Jawaban Asli:

Menurut saya perilaku ini bukan bug.

Konsensus umum untuk Javascript apakah itu undefined berarti tidak ditugaskan sementara null berarti ditugaskan tetapi sebaliknya tidak ditentukan . Perbandingan nilai terhadap yang tidak terdefinisi, selain kesetaraan, tidak masuk akal, setidaknya dalam arti matematis.

Mengingat bahwa BSON banyak mengambil dari JavaScript, ini juga berlaku untuk MongoDB.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb Atlas:tidak diizinkan pada admin untuk menjalankan perintah

  2. Masalah Node + Mongodb + ISODate + Zona Waktu

  3. bagaimana cara menggunakan MongoDB untuk menyimpan pesan ejabberd?

  4. Bagaimana cara membuat layanan CUPS untuk mongoDB?

  5. Cara mengembalikan semua bidang tanpa menentukan setelah $group stage