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

MongoDB $nin Operator Kueri

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 .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. SchemaType mana di Mongoose yang Terbaik untuk Timestamp?

  2. Temukan catatan MongoDB di mana bidang array tidak kosong

  3. 10 fitur teratas dari MongoDB Atlas

  4. Penyatuan koneksi database MongoDB Java Driver dengan Tomcat

  5. Impor Data CSV sebagai Array di MongoDB menggunakan mongoimport