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

Cara mengembalikan dokumen di mana dua bidang memiliki nilai yang sama

Anda memiliki dua pilihan di sini. Yang pertama adalah menggunakan $where operator.

Collection.find( { $where: "this.start === this.end" } )

Opsi kedua adalah menggunakan kerangka kerja agregasi dan $redact operator.

Collection.aggregate([
    { "$redact": { 
        "$cond": [
            { "$eq": [ "$start", "$end" ] },
            "$$KEEP",
            "$$PRUNE"
        ]
    }}
])

$where operator melakukan evaluasi JavaScript dan tidak dapat memanfaatkan indeks sehingga kueri menggunakan $where dapat menyebabkan penurunan kinerja dalam aplikasi Anda. Lihat pertimbangan . Jika Anda menggunakan $where setiap dokumen Anda akan dikonversi dari BSON ke objek JavaScript sebelum operasi $where yang, akan menyebabkan penurunan kinerja. Tentu saja kueri Anda dapat ditingkatkan jika Anda memiliki filter indeks. Juga Ada risiko keamanan jika Anda membuat kueri secara dinamis berdasarkan masukan pengguna.

$redact seperti $where tidak menggunakan indeks dan bahkan melakukan pemindaian koleksi, tetapi kinerja kueri Anda meningkat saat Anda $redact karena merupakan standar operator MongoDB. Meskipun demikian, opsi agregasi jauh lebih baik karena Anda selalu dapat memfilter dokumen Anda menggunakan operator $match.

$where di sini baik-baik saja tetapi bisa dihindari. Saya juga percaya bahwa Anda hanya perlu $where ketika Anda memiliki masalah desain skema. Misalnya menambahkan bidang boolean lain ke dokumen dengan indeks dapat menjadi pilihan yang baik di sini.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. konektor wastafel kafka mongodb tidak mulai

  2. Mengubah ukuran gambar dengan Nodejs dan Imagemagick

  3. MongoError:koneksi 0 ke localhost:27017 habis waktu

  4. Loopback ValidationError:Instance `Role` tidak valid. Detail:`name` sudah ada (nilai:admin)

  5. Abaikan nilai tidak terdefinisi yang diteruskan dalam parameter objek kueri untuk fungsi Temukan Mongoose?