Mengapa metode findOneAndUpdate
menggunakan findAndModify
di bawah tenda alih-alih findOneAndUpdate ?
Saya perlu melewati pengaturan proyeksi tetapi tidak berfungsi karena findAndModifiy
tidak mengambil parameter seperti itu, dan karena itu mengembalikan seluruh dokumen.
Misalnya:
Product
.findOneAndUpdate({
_id: productId,
}, {
$push: {colors: data},
}, {
projection: {
name: 1, 'colors.$': 1,
},
returnNewDocument: true,
})
Karena findOneAndUpdate()
long luwak mendahului keberadaan findOneAndUpdate()
di driver mongodb yang mendasarinya, dan findOneAndUpdate()
driver hanyalah pembungkus tipis di sekitar findAndModify
. Juga, findOneAndUpdate()
driver memiliki beberapa semantik yang unik, terutama terkait dengan opsi new
dan perbedaan antara new
dan returnNewDocument
, yang merepotkan luwak.
Proyeksi tidak berfungsi adalah sedikit masalah. Coba gunakan 'bidang' alih-alih 'proyeksi', karena itulah nama yang digunakan fungsi findAndModify
yang mendasarinya
Terima kasih telah mengklarifikasi. Ya, saya perhatikan bahwa ada beberapa perbedaan aneh dalam penamaan, misalnya fields
vs projection
dan new
vs. returnNewDocument
.
Ya, ada sedikit kebingungan di sana karena setiap API ingin menjadi kepingan saljunya sendiri :) Sekarang driver mongodb menambahkan fungsi findOneAndUpdate()
yang memiliki kebiasaannya sendiri, belum begitu yakin dengan cara melanjutkan di fineOneAndUpdate( )
Komentar yang paling membantu
Ya, ada sedikit kebingungan di sana karena setiap API ingin menjadi kepingan saljunya sendiri :) Sekarang driver mongodb menambahkan fungsi
findOneAndUpdate()
yang memiliki kebiasaannya sendiri, belum begitu yakin dengan cara melanjutkan di fineOneAndUpdate( )