FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
Di atas sepertinya tidak berhasil. Catatan masih ada di sana.
Bisakah seseorang memperbaikinya?
FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
Di atas sepertinya tidak berhasil. Catatan masih ada di sana.
Bisakah seseorang memperbaikinya?
Jika Anda tidak ingin mengulanginya, coba FBFriendModel.find({ id:333 }).remove( callback );
atauFBFriendModel.find({ id:333 }).remove().exec();
mongoose.model.find
mengembalikan Query , yang memiliki remove
fungsi .
Pembaruan untuk Mongoose v5.5.3 - remove()
sekarang tidak digunakan lagi. Gunakan deleteOne()
, deleteMany()
ataufindOneAndDelete() instead.
.exec()
tetapi ini tidak sama sekali. Apakah.exec()
diperlukan, apakah ada efek samping untuk menggunakannya atau tidak?UPDATE: Versi luwak (5.5.3)
hapus () sudah usang dan Anda bisa menggunakan deleteOne (), deleteMany (), atau bulkWrite () sebagai gantinya.
Pada
"mongoose": ">=2.7.1"
Anda dapat menghapus dokumen secara langsung dengan.remove()
metode daripada menemukan dokumen dan kemudian menghapusnya yang menurut saya lebih efisien dan mudah dirawat.Lihat contoh:
MEMPERBARUI:
Pada luwak
3.8.1
, ada beberapa metode yang memungkinkan Anda menghapus langsung dokumen, katakan:remove
findByIdAndRemove
findOneAndRemove
Lihat dokumen API luwak untuk informasi lebih lanjut.
sumber
remove(query)
berpotensi mengosongkan seluruh koleksi Anda jika Anda tidak sengaja lulusquery = {}
. Karena itu saya lebih sukafindOneAndRemove(query)
jika saya hanya menghapus satu dokumen.Model.remove({ _id: 'whatever' }).exec().then(...)
docs
adalah berbagai dokumen. jadi tidak adamongooseModel.remove()
metode.Anda dapat mengulang dan menghapus setiap dokumen dalam array secara terpisah.
Atau - karena sepertinya Anda menemukan dokumen dengan (mungkin) id unik -
findOne
bukan menggunakanfind
.sumber
Ini bagi saya adalah yang terbaik pada versi 3.8.1:
Dan itu hanya membutuhkan satu panggilan DB. Gunakan ini mengingat Anda tidak melakukan
remove
tindakan apa pun selain pencarian dan penghapusan.sumber
pre 'remove'
tindakan itu berfungsi dengan baik.Lakukan saja
sumber
mongoose.model.find()
mengembalikan Objek Permintaan yang juga memilikiremove()
fungsi.Anda dapat menggunakan
mongoose.model.findOne()
juga, jika Anda ingin menghapus hanya satu dokumen unik.Jika tidak, Anda dapat mengikuti pendekatan tradisional di mana Anda pertama kali mengambil dokumen dan kemudian menghapus.
Berikut ini cara-cara pada
model
objek yang dapat Anda lakukan salah satu dari yang berikut untuk menghapus dokumen:yourModelObj.findByIdAndRemove(id, options, callback)
yourModelObj.remove(conditions, callback);
sumber
remove()
telah ditinggalkan. GunakandeleteOne()
,deleteMany()
ataubulkWrite()
.Kode yang saya gunakan
sumber
(node:9132) DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.
Untuk menggeneralisasi, Anda dapat menggunakan:
Cara lain untuk mencapai ini adalah:
sumber
Hati-hati dengan findOne dan hapus!
Kode di atas menghapus SEMUA pengguna yang bernama 'Alice' alih-alih yang pertama saja.
Omong-omong, saya lebih suka menghapus dokumen seperti ini:
Atau berikan panggilan balik dan hilangkan eksekutif ()
sumber
Ref: http://mongoosejs.com/docs/api.html#model_Model.remove
sumber
Jika Anda mencari hanya satu objek yang akan dihapus, Anda dapat menggunakan
Dalam contoh ini, Mongoose akan dihapus berdasarkan pencocokan req.params.id.
sumber
.remove()
bekerja seperti.find()
:sumber
Saya lebih suka notasi janji, di mana Anda perlu misalnya
sumber
Untuk menghapus dokumen, saya lebih suka menggunakan
Model.remove(conditions, [callback])
Silakan lihat dokumentasi API untuk dihapus: -
http://mongoosejs.com/docs/api.html#model_Model.remove
Untuk kasus ini, kode akan menjadi: -
Jika Anda ingin menghapus dokumen tanpa menunggu tanggapan dari MongoDB, jangan melewati callback, maka Anda perlu memanggil exec pada Query yang dikembalikan
sumber
Anda bisa menggunakan kueri langsung di dalam fungsi hapus, jadi:
sumber
Anda selalu dapat menggunakan fungsi bawaan Mongoose:
sumber
Pembaruan:
.remove()
disusutkan tetapi ini masih berfungsi untuk versi yang lebih lamasumber
menggunakan metode remove () yang dapat Anda hapus.
sumber
Ini bekerja untuk saya, coba saja ini:
sumber
Model.remove
sudah tidak digunakan lagiSesuai Jawaban Samyak Jain, saya menggunakan Async Tunggu
sumber
Saya sangat suka pola ini di aplikasi async / menunggu yang mampu Express / Mongoose:
sumber
sumber