Dari dokumentasi resmi mereka sendiri atau- lawan dalam :
Jika Anda memiliki dokumen seperti di bawah ini :
[
{
"price": 100
},
{
"price": 200
},
{
"price": 300
},
{
"price": 400
},
{
"price": 500
}
]
Jika Anda ingin mendapatkan dokumen di mana price
sama dengan 100
atau 500
, kueri seperti :
db.collection.find({ price: { $in: [ 100, 500 ] } })
Dengan melakukan seperti di atas, kueri menjadi sederhana &bersih. Anda juga dapat menggunakan $or
bukannya $in
tetapi mengapa Anda kehilangan notasi steno dan mencoba membuat kueri Anda terlihat besar dengan menambahkan lebih banyak objek dari bidang yang sama berulang kali?
Secara default jika Anda ingin melakukan logika OR
pada dua operator berbeda Anda akan menggunakan $or
, Tapi kapan harus menggunakan $or
di bidang yang sama :
db.collection.find({ $or: [ { price: { $lt: 200 } }, { price: { $gt: 400 } } ] })
Seperti di atas ketika Anda memiliki beberapa kondisi berbeda untuk dicocokkan di bidang yang sama, Anda akan menggunakannya.
Kedua kueri ini menghasilkan hasil yang sama saat dijalankan tetapi saat Anda menggunakan $in
- jika nilai input berupa angka lurus atau dapat berupa string atau jenis lain di mana nilai input akan sama persis dengan nilai price
bidang dalam dokumen, tetapi ketika Anda menggunakan $or
Anda sedang memeriksa kondisi yang berbeda di bidang yang sama.
Uji : mongoplayground