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.