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 .