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

Operator sampel MongoDB

Operator bersyarat MongoDB tentukan kondisi yang sesuai dengan nilai bidang dokumen.

Operator Kueri Perbandingan

  • $eq (sama)
  • $ne (tidak sama)
  • $gt (lebih dari)
  • $lt (kurang dari)
  • $gte (lebih atau sama)
  • $lte (kurang atau sama dengan)
  • $in mendefinisikan array nilai, salah satunya harus memiliki bidang dokumen
  • $nin mendefinisikan larik nilai yang seharusnya tidak memiliki bidang dokumen

Misalnya, kami akan menemukan semua dokumen yang memiliki nilai kunci usia kurang dari 30:

db.users.find ({age: {$lt : 30}})

Penggunaan operator pembanding lainnya akan serupa. Misalnya, kunci yang sama, hanya lebih dari 30:

db.users.find ({age: {$gt : 30}})

Perhatikan bahwa perbandingan di sini dilakukan pada tipe integer, bukan string. Jika usia kunci mewakili nilai string maka perbandingan harus dilakukan pada baris:db.users.find ({age:{$gt :“30”}}), tetapi hasilnya akan sama.

Tapi mari kita bayangkan situasi di mana kita harus menemukan semua volume dengan nilai bidang usia lebih besar dari 30 tetapi kurang dari 50. Dalam hal ini, kita dapat menggabungkan dua operator:

db.users.find ({age: {$gt : 30, $lt: 50}})

Kami akan menemukan pengguna yang berusia 22 tahun:

db.users.find ({age: {$eq : 22}})

Intinya, ini adalah analogi dari pertanyaan berikutnya:

db.users.find ({age: 22})

Operasi terbalik – temukan pengguna yang usianya BUKAN 22:

db.users.find ({age: {$ne : 22}})

Operator $in mendefinisikan larik kemungkinan ekspresi dan mencari kunci yang nilainya ada dalam larik:

db.users.find ({age: {$in : [22, 32]}})

Sebaliknya, operator $nin mendefinisikan larik kemungkinan ekspresi dan mencari kunci yang nilainya tidak ada dalam larik ini:

db.users.find ({usia:{$nin :[22, 32]}})

Operator logika

Operator logika dieksekusi pada kondisi pengambilan sampel:

  • $atau :menghubungkan dua kondisi, dan dokumen harus memenuhi salah satu dari kondisi ini
  • $dan: menghubungkan dua kondisi, dan dokumen harus memenuhi kedua kondisi
  • $tidak: dokumen TIDAK boleh sesuai dengan ketentuan
  • $nor: menghubungkan dua kondisi, dan dokumen TIDAK harus memenuhi kedua kondisi

Operator sampel MongoDB

Operator $or mewakili operasi logika OR dan mendefinisikan satu set pasangan kunci-nilai yang harus ada dalam dokumen. Dan jika dokumen memiliki setidaknya satu pasangan nilai kunci tersebut, dokumen tersebut sesuai dengan kueri ini dan diekstraksi dari database:

db.users.find ({$or : [{name: "Tom"}, {age: 22}]})

Ekspresi ini akan mengembalikan semua dokumen dengan baik name=Tom atau age=22.

Contoh lain akan mengembalikan semua dokumen dengan baik name=Tom dan age=22 atau dengan “jerman” di antara nilai bahasa:

db.users.find ({name: "Tom", $or : [{age: 22}, {languages: "german"}]})

Operator bersyarat dapat digunakan dalam subekspresi atau subekspresi:

db.users.find ({$or : [{name: "Tom"}, {age: {$gte:30}}]})

Dalam hal ini kami memilih semua dokumen di mana name="Tom" atau bidang usia memiliki nilai 30 atau lebih tinggi.

Operator $dan

Operator $and mewakili operasi logika AND (perkalian logis) dan mendefinisikan sekumpulan kriteria yang harus dipenuhi oleh dokumen. Berbeda dengan $or operator, dokumen harus memenuhi semua kriteria yang ditentukan. Misalnya:

db.users.find ({$and : [{name: "Tom"}, {age: 32}]})

Di sini dokumen yang dipilih harus memiliki nama Tom dan usia 32 – kedua fitur ini.

Pencarian Array MongoDB

Beberapa operator dirancang untuk bekerja dengan larik:

  • $all: mendefinisikan satu set nilai yang harus ada dalam array
  • $ukuran: mendefinisikan jumlah elemen yang harus ada dalam array
  • $elemMatch: menentukan kondisi di mana elemen-elemen dalam array harus sesuai

MongoDB $all

Operator $all mendefinisikan larik kemungkinan ekspresi dan mengharuskan dokumen memiliki seluruh kumpulan ekspresi yang ditentukan. Dengan demikian, ini digunakan untuk mencari array. Misalnya, dokumen memiliki susunan bahasa yang menyimpan bahasa asing yang digunakan oleh pengguna. Dan untuk menemukan semua orang yang berbicara bahasa Inggris dan Prancis secara bersamaan, kita dapat menggunakan ekspresi berikut:

db.users.find ({languages: {$all : ["english", "french"]}})

Operator $elemMatch

Operator $elemMatch memungkinkan Anda memilih dokumen yang arraynya berisi elemen yang termasuk dalam kondisi tertentu. Misalnya, biarkan database berisi kumpulan peringkat pengguna untuk kursus tertentu. Mari kita tambahkan beberapa dokumen:

db.grades.insertMany([{student: "Tom", courses:[{name: "Java", grade: 5}, {name: "MongoDB", grade: 4}]},
{student: "Alice", courses:[{name: "C++", grade: 3}, {name: "MongoDB", grade: 5}]}))

Setiap dokumen memiliki larik, yang pada gilirannya terdiri dari dokumen bersarang.

Sekarang kita akan menemukan siswa yang memiliki nilai di atas 3 untuk kursus MongoDB:

db.grades.find({courses: {$elemMatch: {name: "MongoDB", grade: {$gt: 3}}}})

Operator $size

Operator $size digunakan untuk menemukan dokumen yang arraynya memiliki jumlah elemen yang sama dengan nilai $size. Sebagai contoh, mari kita ekstrak semua dokumen di mana ada dua elemen dalam larik laguages:

db.users.find ({languages: {$size:2}})

Kueri semacam itu akan sesuai, misalnya, dengan dokumen berikut:

{"name": "Tom", "age": 32, languages: ["english", "german"]}

Operator $ada

Operator $exists memungkinkan untuk mengekstrak hanya dokumen-dokumen di mana kunci tertentu ada atau tidak ada. Misalnya, kembalikan semua dokumen yang berisi kunci perusahaan:

db.users.find ({company: {$exists:true}})

Jika kita menetapkan $exists sebagai parameter palsu, kueri hanya akan mengembalikan kepada kita dokumen-dokumen yang tidak berisi kunci perusahaan.

Operator $type

Operator $type hanya mengekstrak dokumen-dokumen di mana kunci tertentu memiliki nilai tipe tertentu, misalnya string atau angka:

db.users.find ({age: {$type: "string"}})
> db.users.find ({age: {$type: "number"}})

Operator $regex

Operator $regex menentukan ekspresi reguler yang sesuai dengan nilai bidang . Misalnya, biarkan nama bidang harus memiliki huruf "b":

db.users.find ({name: {$regex: "b"}})

Penting untuk dipahami bahwa $regex tidak hanya mengambil string, tetapi ekspresi reguler, misalnya:nama:{$regex:“om$”} – nilai nama harus diakhiri dengan “om”.

Tutorial MongoDB:Operator Kueri Array ($all, $elemMatch, $size)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Inisialisasi global yang gagal:BadValue Tidak valid atau tidak ada set lokal pengguna. Harap pastikan variabel lingkungan LANG dan/atau LC_* disetel dengan benar

  2. Kueri agregasi luwak gagal dalam tes Jest/Mockgoose, berfungsi di tempat lain

  3. Bisakah saya mengubah indeks yang ada di MongoDB tanpa menghapusnya?

  4. Mengenkripsi Data MongoDB saat Istirahat

  5. Ikhtisar Validasi Skema MongoDB