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

Bisakah $in dan $or saling menggantikan di MongoDB?

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




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menggunakan _id yang dihasilkan MongoDB sebagai data rahasia (misalnya, Token OAuth)

  2. node.js express mongodb menyimpan pesan?

  3. MongoDB &Mongoose mengakses satu database sambil mengautentikasi terhadap yang lain (NodeJS, Mongoose)

  4. apakah ada ORM mongodb yang memungkinkan Anda untuk alias bidang?

  5. Bagaimana cara memperbarui properti di banyak objek dalam array untuk satu dokumen di koleksi Meteor/minimongo?