sto usando, Mongo 3.4.0
L'operatore $ rename aggiorna il nome di un campo e ha il seguente formato:
{$rename: { <field1>: <newName1>, <field2>: <newName2>, ... } }
per e.g
db.getCollection('user').update({ _id: 1 }, { $rename: { 'fname': 'FirstName', 'lname': 'LastName' } })
Il nuovo nome campo deve essere diverso dal nome del campo esistente. Per specificare un in un documento incorporato, utilizzare la notazione a punti.
Questa operazione rinomina il Nmae campo per nome per tutti i documenti della collezione:
db.getCollection('user').updateMany({}, { $rename: { "add": "Address" } })
db.getCollection('user').update({}, {$rename:{"name.first":"name.FirstName"}}, false, true);
Nel metodo sopra false, true sono: {upsert: false, a più: true} .Per aggiornare tutti i record , Hai bisogno del multi: vero.
rinominare un campo in un documento incorporato
db.getCollection('user').update({ _id: 1 }, { $rename: { "name.first": "name.fname" } })
uso link: https://docs.mongodb.com/manual/reference/operator/update/rename/
fonte
2017-12-04 08:59:29
Grazie! Ho modificato la mia risposta per correggere questo. –
Solo una parola per se stai sbattendo la testa contro il muro perché nulla viene aggiornato in massa: il 'false, true' nel metodo' update' della versione '$ rename' sono:' {upsert: false, multi: true } '. Hai bisogno di 'multi: true' per aggiornare tutti i tuoi record. – RickyA
e se lo sto ottenendo 'upsert: true' creerà il nome del campo se il nome del campo non esiste, il valore predefinito è' false'. – IGRACH