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

MongoDB $jikaNull

Di MongoDB, $ifNull adalah operator pipeline agregasi yang memungkinkan Anda menentukan nilai yang akan digunakan sebagai pengganti null .

Cara kerjanya adalah, Anda memberikan ekspresi dan ekspresi pengganti. Jika ekspresi dievaluasi ke nilai non-null, ekspresi itu dikembalikan. Tetapi jika ekspresi mengevaluasi ke nilai nol, $ifNull mengembalikan nilai ekspresi pengganti.

Nilai nol mencakup contoh nilai yang tidak ditentukan atau bidang yang tidak ada.

Contoh

Misalkan kita memiliki koleksi yang disebut test dengan dokumen sebagai berikut:

{ "_id" : 1, "data" : 250 }
{ "_id" : 2, "data" : -250 }
{ "_id" : 3, "data" : "Bucket" }
{ "_id" : 4, "data" : 0 }
{ "_id" : 5, "data" : ISODate("2021-01-03T23:30:15.100Z") }
{ "_id" : 6, "data" : null }
{ "_id" : 7, "data" : Infinity }
{ "_id" : 8, "data" : -Infinity }

Inilah yang terjadi jika kita menggunakan $ifNull operator pada data bidang:

db.test.aggregate(
   [
     {
       $project:
          {
            result: { $ifNull: [ "$data", "Value not provided" ] }
          }
     }
   ]
)

Hasil:

{ "_id" : 1, "result" : 250 }
{ "_id" : 2, "result" : -250 }
{ "_id" : 3, "result" : "Bucket" }
{ "_id" : 4, "result" : 0 }
{ "_id" : 5, "result" : ISODate("2021-01-03T23:30:15.100Z") }
{ "_id" : 6, "result" : "Value not provided" }
{ "_id" : 7, "result" : Infinity }
{ "_id" : 8, "result" : -Infinity }

Kita dapat melihat bahwa hanya satu bidang yang memiliki nilai nol dan oleh karena itu, itu adalah satu-satunya yang mengembalikan "Value not provided" .

Bidang Tidak Terdefinisi dan Tidak Ada

Seperti yang disebutkan, nilai yang tidak ditentukan dan bidang yang hilang diperlakukan sebagai nilai nol.

Misalkan kita menambahkan dokumen berikut ke koleksi kita:

{ "_id" : 9, "data" : undefined }
{ "_id" : 10, "name" : "Homer" }

Dalam hal ini, dokumen 9 memiliki undefined di bidang data, tetapi dokumen 10 bahkan tidak memiliki data lapangan.

Inilah yang terjadi ketika kita menerapkan $ifNull ke dokumen-dokumen itu:

db.test.aggregate(
   [
     { $match: { _id: { $in: [ 9, 10 ] } } },
     {
       $project:
          {
            result: { $ifNull: [ "$data", "Value not provided" ] }
          }
     }
   ]
)

Hasil:

{ "_id" : 9, "result" : "Value not provided" }
{ "_id" : 10, "result" : "Value not provided" }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Luwak:Skema vs Model?

  2. memahami sistem cache MongoDB

  3. Perbarui objek yang disematkan di dalam array di dalam array di MongoDB

  4. Fungsi Mongo Find() tidak akan mengecualikan _id

  5. 5 Cara Memilih Baris dengan Nilai Maksimum untuk Grupnya di SQL