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.