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

MongoDB $ada

Di MongoDB, Anda dapat menggunakan $exists operator kueri elemen untuk mencocokkan dokumen yang berisi bidang tertentu.

Anda juga dapat menggunakannya untuk mencocokkan dokumen yang tidak berisi bidang tertentu.

Anda juga dapat menggunakannya bersama dengan operator lain seperti $nin untuk mencocokkan dokumen yang memiliki bidang tertentu, tetapi tidak berisi nilai tertentu.

Contoh

Misalkan kita memiliki koleksi yang disebut cats yang berisi dokumen-dokumen berikut:

{ "_id" : 1, "name" : "Scratch", "born" : "March, 2020" }
{ "_id" : 2, "name" : "Meow", "weight" : 30 }
{ "_id" : 3, "name" : "Fluffy", "height" : 15 }
{ "_id" : 4, "name" : "Sox", "weight" : 40 }
{ "_id" : 5, "name" : null, "weight" : 20 }
{ "_id" : 6, "height" : 20, "born" : ISODate("2021-01-03T23:30:15.123Z") }

Dokumen-dokumen ini sedikit tidak konsisten sehubungan dengan bidang yang mereka miliki. Beberapa memiliki weight bidang, yang lain memiliki height bidang, beberapa memiliki born lapangan, dll

Kita dapat menggunakan $exists operator untuk mengembalikan dokumen dari koleksi yang memiliki bidang tertentu.

Contoh:

db.cats.find( { weight: { $exists: true } } )

Hasil:

{ "_id" : 2, "name" : "Meow", "weight" : 30 }
{ "_id" : 4, "name" : "Sox", "weight" : 40 }
{ "_id" : 5, "name" : null, "weight" : 20 }

Kita dapat melihat bahwa hanya dokumen-dokumen yang mengandung weight bidang dikembalikan.

Bidang yang Mengandung null

$exists operator menyertakan bidang yang berisi null . Itu tidak membedakan antara null dan non-null nilai.

Contoh:

db.cats.find( { name: { $exists: true } } )

Hasil:

{ "_id" : 1, "name" : "Scratch", "born" : "March, 2020" }
{ "_id" : 2, "name" : "Meow", "weight" : 30 }
{ "_id" : 3, "name" : "Fluffy", "height" : 15 }
{ "_id" : 4, "name" : "Sox", "weight" : 40 }
{ "_id" : 5, "name" : null, "weight" : 20 }

Kita dapat melihat bahwa dokumen 5 dikembalikan, meskipun name its bidangnya adalah null .

Ada Tanpa Nilai Tertentu

Anda dapat menggabungkan $exists dengan operator lain untuk mengembalikan dokumen yang berisi bidang tersebut, tetapi bidang tersebut tidak berisi nilai tertentu.

Contoh:

db.cats.find( { weight: { $exists: true, $nin: [20,30] } } )

Hasil:

{ "_id" : 4, "name" : "Sox", "weight" : 40 }

Ini adalah hasil yang berbeda dengan yang akan kita lihat jika kita hanya menggunakan $nin tanpa $exists operator.

Inilah yang akan terlihat seperti:

db.cats.find( { weight: { $nin: [20,30] } } )

Hasil:

{ "_id" : 1, "name" : "Scratch", "born" : "March, 2020" }
{ "_id" : 3, "name" : "Fluffy", "height" : 15 }
{ "_id" : 4, "name" : "Sox", "weight" : 40 }
{ "_id" : 6, "height" : 20, "born" : ISODate("2021-01-03T23:30:15.123Z") }

Dokumen yang Tidak Mengandung Bidang Tertentu

Anda dapat menggunakan $exists: false untuk mengembalikan dokumen yang tidak berisi bidang yang ditentukan.

Contoh:

db.cats.find( { name: { $exists: false } } )

Hasil:

{ "_id" : 6, "height" : 20, "born" : ISODate("2021-01-03T23:30:15.123Z") }

Dalam hal ini, satu dokumen dalam koleksi tidak berisi name lapangan.

Periksa Beberapa Bidang

Anda dapat memeriksa keberadaan beberapa bidang dengan memisahkannya dengan koma.

Contoh:

db.cats.find( { 
  name: { $exists: true }, 
  height: { $exists: true } 
} )

Hasil:

{ "_id" : 3, "name" : "Fluffy", "height" : 15 }

Contoh ini mengembalikan semua dokumen yang berisi name bidang dan height lapangan.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara melakukan pagination menggunakan kueri rentang di MongoDB?

  2. Bagaimana cara mengubah daftar casbah mongodb ke json di scala / play

  3. mongo:pengembalian tidak sama dengan hitungan ()

  4. Cara Memeriksa Tipe Data Kolom di SQL

  5. Bagaimana cara memasukkan dokumen ke mongodb menggunakan luwak dan mendapatkan id yang dihasilkan?