Mongodb: cara menggunakan operator or ($or) dalam kueri


Anda dapat menggunakan operator $or di MongoDB untuk menemukan dokumen yang cocok dengan salah satu dari beberapa kriteria.

Operator ini menggunakan sintaks dasar berikut:

 db.myCollection.find({
  “ $or ”: [
    {" field1 ": " hello "},
    {" field2 ": { $gte : 10 }}
  ]
})

Contoh khusus ini mencari semua dokumen dalam koleksi bernama myCollection dengan field1 sama dengan “halo” atau field2 memiliki nilai lebih besar atau sama dengan 10.

Contoh berikut memperlihatkan cara menggunakan sintaksis ini dalam praktik dengan tim koleksi dengan dokumen berikut:

 db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8})
db.teams.insertOne({team: " Mavs ", points: 35, rebounds: 12})
db.teams.insertOne({team: " Spurs ", points: 20, rebounds: 7})
db.teams.insertOne({team: " Spurs ", points: 25, rebounds: 5})
db.teams.insertOne({team: " Spurs ", points: 23, rebounds: 9})

Contoh 1: Gunakan operator OR dengan dua kolom

Kode berikut menunjukkan cara menemukan semua dokumen dalam koleksi tim di mana bidang “tim” sama dengan “Spurs” atau nilai bidang “poin” lebih besar atau sama dengan 31:

 db.teams.find({
  “ $or ”: [
    {" team ": " Spurs "},
    {" points ": { $gte : 31 }}
  ]
})

Kueri ini mengembalikan dokumen berikut:

 { _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }
{ _id: ObjectId("62018750fd435937399d6b72"),
  team: 'Spurs',
  points: 23,
  rebounds: 9 }

Perhatikan bahwa setiap dokumen dalam keluaran berisi “Spurs” di bidang tim atau nilai lebih besar dari atau sama dengan 31 di bidang poin.

Contoh 2: menggunakan operator OR dengan lebih dari dua field

Kode berikut menunjukkan cara menemukan semua dokumen dalam koleksi tim di mana bidang “tim” sama dengan “Mavs” atau nilai bidang “poin” lebih besar dari atau sama dengan 25 atau nilai bidang “rebound” kurang dari 8:

 db.teams.find({
  “ $or ”: [
    {" team ": " Mavs "},
    {" points ": { $gte : 25 }},
    {" rebounds ": { $lt : 8 }}
  ]
})

Kueri ini mengembalikan dokumen berikut:

 { _id: ObjectId("62018750fd435937399d6b6e"),
  team: 'Mavs',
  points: 30,
  rebounds: 8 }
{ _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }

Perhatikan bahwa masing-masing dokumen ini memenuhi satu atau lebih dari tiga kriteria:

  • Bidang “tim” sama dengan “ Mavs
  • Bidang “poin” memiliki nilai lebih besar atau sama dengan 25
  • Bidang “rebound” memiliki nilai kurang dari 8

Catatan : Anda dapat menemukan dokumentasi lengkap untuk fungsi $or di sini .

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di MongoDB:

MongoDB: Cara menggunakan operator AND dalam kueri
MongoDB: Cara memeriksa apakah bidang berisi string
MongoDB: Cara menggunakan kueri “NO IN”.
MongoDB: Cara mencari “not null” di bidang tertentu

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *