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

MongoDB $dalam Operator Kueri

Di MongoDB, $in operator kueri memilih dokumen di mana nilai bidang sama dengan nilai apa pun dalam larik yang ditentukan.

$in operator kueri jangan bingung dengan $in operator pipa agregasi, yang mengembalikan boolean yang menunjukkan apakah nilai tertentu ada dalam larik.

Contoh

Misalkan kita memiliki koleksi yang disebut products dengan dokumen sebagai berikut:

{ "_id" : 1, "prod" : "Shorts" }
{ "_id" : 2, "prod" : "Jeans", "sizes" : null }
{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 4, "prod" : "Shirt", "sizes" : "M" }
{ "_id" : 5, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

Kita dapat menggunakan $in operator untuk memilih hanya dokumen-dokumen dengan _id tertentu nilai.

Contoh kode:

db.products.find({ 
  _id: { $in: [ 1, 2, 3 ] } 
})

Hasil:

{ "_id" : 1, "prod" : "Shorts" }
{ "_id" : 2, "prod" : "Jeans", "sizes" : null }
{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }

Dalam hal ini, kami hanya menginginkan dokumen yang berisi _id nilai 1 , 2 , atau 3 .

Contoh 2

Ini contoh lain. Kali ini kita menggunakan $in melawan bidang yang berbeda.

db.products.find({ 
  sizes: { $in: [ "L" ] } 
})

Hasil:

{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

Dalam contoh ini kami menerapkan $in ke sizes bidang.

Dalam hal ini, dokumen pertama memiliki nilai sebagai string, sedangkan dua dokumen lainnya memilikinya sebagai elemen array. Bagaimanapun, semua dokumen yang cocok dikembalikan.

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: { $in: [ 1, 2, 3 ] } } }
   ]
)

Hasil:

{ "_id" : 1, "prod" : "Shorts" }
{ "_id" : 2, "prod" : "Jeans", "sizes" : null }
{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }

Dan ini dia lagi saat menanyakan sizes bidang:

db.products.aggregate(
   [
     { $match: { sizes: { $in: [ "L" ] } } }
   ]
)

Hasil:

{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

Ekspresi Reguler

Anda dapat menggunakan ekspresi reguler dalam kueri dengan menggunakan formulir /pattern/ .

Contoh:

db.products.find({ 
  sizes: { $in: [ /^X/ ] } 
})

Hasil:

{ "_id" : 5, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

Dalam contoh ini, saya mengembalikan semua dokumen yang memiliki sizes bidang dengan nilai berupa string yang dimulai dengan X atau larik di mana setidaknya salah satu elemen dimulai dengan X .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tidak dapat membatalkan serialisasi PyMongo ObjectId dari JSON

  2. Apa cara terbaik untuk menangani koneksi global Mongodb di NodeJs

  3. agregasi MongoDB yang berbeda

  4. NodeJS dan MongoDB FindAndModify() perlu dihapus atau diperbarui

  5. Mustahil untuk mendapatkan properti dari objek luwak