Kamu bisa memakai:
db.foo.update({}, {$rename:{"name.additional":"name.last"}}, false, true);
Atau untuk sekadar memperbarui dokumen yang berisi properti:
db.foo.update({"name.additional": {$exists: true}}, {$rename:{"name.additional":"name.last"}}, false, true);
The false, true
dalam metode di atas adalah: { upsert:false, multi:true }
. Anda perlu multi:true
memperbarui semua catatan Anda.
Atau Anda dapat menggunakan cara sebelumnya:
remap = function (x) {
if (x.additional){
db.foo.update({_id:x._id}, {$set:{"name.last":x.name.additional}, $unset:{"name.additional":1}});
}
}
db.foo.find().forEach(remap);
Di MongoDB 3.2 Anda juga bisa menggunakan
db.students.updateMany( {}, { $rename: { "oldname": "newname" } } )
Sintaks umum dari ini adalah
db.collection.updateMany(filter, update, options)
https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/
false, true
diupdate
metode dari$rename
versi adalah:{ upsert:false, multi:true }
. Anda perlumulti:true
memperbarui semua catatan Anda.upsert:true
akan membuat nama bidang jika nama bidang tidak ada, standarnya adalahfalse
."table.field" : "table.field"
sintaks. Itu berhasil ketika saya baru saja menggunakan"field" : "field"
sintaks.name.last
tidaktable.field
. Jika Anda membaca pertanyaan, Anda bisa melihat bahwaname
bidang menyimpan objek.db.foo.update({}, {$rename:{"name.0.additional":"name.0.last"}}, false, true)
:?tolong coba
db.collectionName.update({}, { $rename : { 'name.additional' : 'name.last' } }, { multi: true } )
dan baca ini :) http://docs.mongodb.org/manual/reference/operator/rename/#_S_rename
sumber
upsert
danmulti
.Jika pernah Anda perlu melakukan hal yang sama dengan mongoid:
MEMPERBARUI
Ada perubahan sintaksis di
monogoid 4.0.0
:sumber
Model.all.rename(old_field: :new_field)
Siapa pun yang berpotensi menggunakan perintah ini untuk mengubah nama bidang dari koleksi (Dengan tidak menggunakan _id):
lihat FYI
sumber
Kode nodejs ini hanya melakukan itu, karena @Felix Yan menyebutkan cara sebelumnya tampaknya berfungsi dengan baik, saya punya beberapa masalah dengan snipets lain berharap ini bisa membantu.
Ini akan mengubah nama kolom "oldColumnName" menjadi "newColumnName" dari tabel "dokumen"
sumber
Saya menggunakan, Mongo 3.4.0
Operator $ rename memperbarui nama bidang dan memiliki formulir berikut:
untuk mis
Nama bidang baru harus berbeda dari nama bidang yang ada. Untuk menentukan dalam dokumen yang disematkan, gunakan notasi titik.
Operasi ini mengganti nama field nmae menjadi nama untuk semua dokumen dalam koleksi:
Dalam metode di atas false, true adalah: {upsert: false, multi: true}. Untuk memperbarui semua catatan Anda, Anda memerlukan multi: true.
Ganti nama Bidang dalam Dokumen Tertanam
gunakan tautan: https://docs.mongodb.com/manual/reference/operator/update/rename/
sumber
Jika Anda menggunakan MongoMapper, ini berfungsi:
sumber