La funzione $ rename è disponibile solo nella versione di sviluppo 1.7.2. Come rinominare il campo in 1.6.5?MongoDB 1.6.5: come rinominare il campo nella collezione
risposta
Il modo più semplice per eseguire un'operazione di questo tipo consiste nel ricorrere al set di dati per ripetere la mappatura del nome del campo. Il modo più semplice per farlo è scrivere una funzione che esegua la riscrittura e quindi utilizzare la sintassi .find().forEach()
nella shell.
Ecco un esempio dalla shell:
db.foo.save({ a : 1, b : 2, c : 3});
db.foo.save({ a : 4, b : 5, c : 6});
db.foo.save({ a : 7, b : 8 });
db.foo.find();
remap = function (x) {
if (x.c){
db.foo.update({_id:x._id}, {$set:{d:x.c}, $unset:{c:1}});
}
}
db.foo.find().forEach(remap);
db.foo.find();
Nel caso di cui sopra che sto facendo un $unset
e $set
nella stessa azione. MongoDB non supporta le transazioni tra le raccolte, ma quanto sopra è un singolo documento. Pertanto, è garantito che il set e il unset saranno atomici (, ovvero entrambi hanno esito positivo oppure entrambi hanno esito negativo).
L'unica limitazione qui è che è necessario gestire gli autori esterni per mantenere i dati coerenti. La mia normale preferenza per questo è semplicemente di disattivare le scritture mentre questo si aggiorna. Se questa opzione non è disponibile, dovrai calcolare il livello di coerenza desiderato per i dati. (Posso fornire qualche idea qui, ma è davvero intenzione di essere specifico per i dati e il sistema)
db.collection_name.update({}, {$rename: {"oldname": "newname"}}, false, true);
Ciò rinominare la colonna per ogni riga della collezione.
Inoltre, ho scoperto che se la tua colonna (quella che stai ridenominando) appare nel catalogo dell'indice (db.collection_name.getIndexes()), allora dovrai rilasciare e ricreare l'indice (usando il nome della nuova colonna) anche.
- 1. Trova post più vecchio/più recente nella collezione mongodb
- 2. Come posso rinominare un campo per tutti i documenti in MongoDB?
- 3. Spring Security: come rinominare il campo "_spring_security_remember_me"?
- 4. Nome sillabato collezione MongoDB
- 5. Come posso rinominare una raccolta in MongoDB?
- 6. Come aggiornare il modello nella collezione?
- 7. Inserire il campo con $ currentDate nella raccolta MongoDB in Meteor
- 8. Come selezionare un singolo campo in MongoDB?
- 9. C'è un modo per recuperare tutto il nome del campo della collezione in mongodb?
- 10. Groovy non nella collezione
- 11. Node - MongoDB: collezione non trova nulla, usando il driver mongodb. Shell restituisce il valore
- 12. Come rinominare il dispositivo genymotion?
- 13. Ottieni l'ultimo record dalla collezione mongodb
- 14. MongoDB Equivalente della collezione Capped in PostgreSQL
- 15. Come posso ottenere l'ultimo elemento in una collezione MongoDB?
- 16. Che cos'è il campo "__v" in MongoDB
- 17. Shell MongoDB: accesso alla collezione con il nome del periodo?
- 18. come aggiungere array esistente nella collezione esistente in MongoDB usando Java con nuovi valori
- 19. Restituisce il tipo effettivo di un campo in MongoDB
- 20. Come viene calcolato il campo textScore nella ricerca full text in mongodb?
- 21. Quadro di aggregazione MongoDB - Rinomina campo dinamico
- 22. Come posso rimuovere una stringa vuota da una collezione mongodb?
- 23. Come trovare il nome del campo MongoDB a profondità arbitraria
- 24. Come restituire solo il valore di un campo nel MongoDB
- 25. Posso ottenere il primo documento (non il campo) nella query aggregata MongoDB?
- 26. MongoDB quadro aggregazione - Fetch campo prima del documento dell'array nidificato
- 27. Campo Mongodb non null delete
- 28. mongoose (mongodb) Alias _id campo
- 29. MongoDB: ridenominazione nome della colonna nella raccolta
- 30. Come rinominare ForeignKey impostare campo in Django Resto quadro
La domanda chiede esplicitamente come eseguire questo senza $ rinominare ... – samkass
C'è un errore di sintassi qui - l'ultimo '}' è posizionato male. Si desidera eseguire 'db.collection_name.update ({}, {$ rinominare: {" oldname ":" newname "}}, false, true);'. – girasquid
-1 questo non funziona in Mongo 1.6.5 – opyate