Saya menggunakan Perpustakaan Mongoose untuk mengakses MongoDB dengan node.js
Apakah ada cara untuk menghapus kunci dari dokumen ? yaitu tidak hanya mengatur nilainya menjadi nol, tetapi menghapusnya?
User.findOne({}, function(err, user){
//correctly sets the key to null... but it's still present in the document
user.key_to_delete = null;
// doesn't seem to have any effect
delete user.key_to_delete;
user.save();
});
mongodb
node.js
mongoose
document-database
Daniel Beardsley
sumber
sumber
Jawaban:
Pada versi awal, Anda perlu menurunkan driver node-mongodb-native. Setiap model memiliki objek koleksi yang berisi semua metode yang ditawarkan oleh node-mongodb-native. Jadi, Anda dapat melakukan tindakan yang dimaksud dengan ini:
Sejak versi 2.0, Anda dapat melakukan:
Dan sejak versi 2.4, jika Anda sudah memiliki contoh model, Anda dapat melakukan:
sumber
User.update({ _id: id }, { $unset: { field: 1 }}, callback)
atau jika Anda memiliki contoh dokumen, setel jalur ke tidak terdefinisi dan kemudian simpan:doc.field = undefined; doc.save()
doc.set('field', undefined)
doc.field.foo
?doc.set('field', undefined)
mungkin tidak cukup karena mode ketat (default) tidak mengizinkan untuk menyetel bidang yang tidak lagi ada dalam skema.doc.set('field', undefined, { strict: false })
bekerja dengan baik.Anda akan ingin melakukan ini:
sumber
Saya menggunakan luwak dan menggunakan salah satu fungsi di atas menurut saya. Fungsi mengkompilasi bebas dari kesalahan tetapi bidang tersebut akan tetap ada.
melakukan trik untuk saya.
sumber
Pada sintaks mongo untuk menghapus beberapa kunci, Anda perlu melakukan hal berikut:
Sepertinya di Mongoose sama saja.
Edit
Lihat contoh ini .
sumber
Mungkinkah ini masalah sampingan seperti menggunakan
dari pada
untuk menemukan panggilan balik? Hanya mencoba membantu dengan ini karena saya sudah menangani kasusnya.
sumber
Dokumen Mongoose BUKAN objek javascript biasa dan itulah mengapa Anda tidak dapat menggunakan operator delete. (Atau
unset
dari pustaka 'lodash').Opsi Anda adalah menyetel doc.path = null || undefined atau untuk menggunakan metode Document.toObject () untuk mengubah dokumen luwak menjadi objek biasa dan dari sana menggunakannya seperti biasa. Baca selengkapnya di luwak api-ref: http://mongoosejs.com/docs/api.html#document_Document-toObject
Contohnya akan terlihat seperti ini:
sumber
Mencoba:
sumber
Masalah dengan semua jawaban ini adalah bahwa mereka bekerja untuk satu bidang. sebagai contoh katakanlah saya ingin menghapus semua bidang dari Dokumen saya jika itu adalah string kosong
""
. Pertama Anda harus memeriksa apakah bidang adalah string kosong taruh ke$unset
:sumber
jika Anda ingin menghapus kunci dari koleksi coba metode ini. ini berhasil untuk saya
sumber
Anda dapat menggunakan delete user._doc.key
sumber