Di MongoDB, $nin
operator kueri memilih dokumen yang nilai bidangnya tidak ada dalam larik yang ditentukan atau jika bidangnya tidak ada.
Contoh
Misalkan kita memiliki koleksi yang disebut products
dengan dokumen sebagai berikut:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] } { "_id" : 4, "prod" : "Shirt", "sizes" : "L" } { "_id" : 5, "prod" : "Jeans", "sizes" : null } { "_id" : 6, "prod" : "Shorts" }
Kita dapat menggunakan $nin
operator untuk memilih hanya dokumen-dokumen yang tidak memiliki _id
tertentu nilai.
Contoh kode:
db.products.find({
_id: { $nin: [ 1, 2, 3 ] }
})
Hasil:
{ "_id" : 4, "prod" : "Shirt", "sizes" : "L" } { "_id" : 5, "prod" : "Jeans", "sizes" : null } { "_id" : 6, "prod" : "Shorts" }
Dalam hal ini, kami hanya menginginkan dokumen yang tidak berisi _id
nilai 1
, 2
, atau 3
.
Contoh 2
Berikut contoh lain. Kali ini kita menggunakan $nin
melawan bidang yang berbeda.
db.products.find({
sizes: { $nin: [ "L" ] }
})
Hasil:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] } { "_id" : 5, "prod" : "Jeans", "sizes" : null } { "_id" : 6, "prod" : "Shorts" }
Dalam contoh ini kami menerapkan $nin
ke sizes
bidang.
Perhatikan bahwa dokumen 6 dikembalikan, meskipun tidak memiliki sizes
bidang. Ini persis seperti yang diharapkan – jika kolom tidak ada, kolom akan disertakan dalam $nin
hasil.
Perbandingan berbagai jenis dievaluasi menurut urutan perbandingan BSON.
Contoh Agregasi
Kita dapat menggunakan sintaks yang sama saat menggunakan $match
operator pipa agregasi.
Contoh kode:
db.products.aggregate(
[
{ $match: { _id: { $nin: [ 1, 2, 3 ] } } }
]
)
Hasil:
{ "_id" : 4, "prod" : "Shirt", "sizes" : "L" } { "_id" : 5, "prod" : "Jeans", "sizes" : null } { "_id" : 6, "prod" : "Shorts" }
Dan ini dia lagi saat menanyakan sizes
bidang:
db.products.aggregate(
[
{ $match: { sizes: { $nin: [ "L" ] } } }
]
)
Hasil:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] } { "_id" : 5, "prod" : "Jeans", "sizes" : null } { "_id" : 6, "prod" : "Shorts" }
Ekspresi Reguler
Anda dapat menggunakan ekspresi reguler dalam kueri dengan menggunakan formulir /pattern/
.
Contoh:
db.products.find({
sizes: { $nin: [ /^X/ ] }
})
Hasil:
{ "_id" : 4, "prod" : "Shirt", "sizes" : "L" } { "_id" : 5, "prod" : "Jeans", "sizes" : null } { "_id" : 6, "prod" : "Shorts" }
Dalam contoh ini, saya mengembalikan semua dokumen yang tidak memiliki sizes
bidang yang dimulai dengan X
.