$ la función de cambio de nombre está disponible solo en la versión de desarrollo 1.7.2. ¿Cómo cambiar el nombre del campo en 1.6.5?MongoDB 1.6.5: cómo cambiar el nombre del campo en la colección
Respuesta
La forma más sencilla de realizar una operación de este tipo consiste en recorrer el conjunto de datos reasignando el nombre del campo. La forma más sencilla de hacerlo es escribir una función que realice la reescritura y luego utilizar la sintaxis .find().forEach()
en el shell.
He aquí una muestra de la cáscara:
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();
En el caso anterior que estoy haciendo un $unset
y una $set
en la misma acción. MongoDB no admite transacciones entre colecciones, pero lo anterior es un documento único. Así que está garantizado que el conjunto y el desarmado serán atómicos (, es decir, ambos tienen éxito o ambos fallan).
La única limitación aquí es que tendrá que administrar escritores externos para mantener la coherencia de los datos. Mi preferencia normal para esto es simplemente desactivar las escrituras mientras esto se actualiza. Si esta opción no está disponible, entonces tendrá que averiguar qué nivel de consistencia desea para los datos. (Puedo proporcionar algunas ideas aquí, pero que realmente va a ser específicos de sus datos y el sistema)
db.collection_name.update({}, {$rename: {"oldname": "newname"}}, false, true);
Esto cambiará el nombre de la columna para cada fila de la colección.
Además, descubrí que si su columna (la que está cambiando de nombre) aparece dentro del catálogo de índice (db.collection_name.getIndexes()), entonces tendrá que soltar y volver a crear el índice (usando el nuevo nombre de columna) también.
- 1. ¿Cómo puedo cambiar el nombre de una colección en MongoDB?
- 2. Cambiar el nombre de la colección en mongodb
- 3. MongoDB: cambiar el nombre de nombre de columna en la colección
- 4. Mongodb - Cambiar nombre db
- 5. Cambiar el nombre del campo en JSON usando Jackson
- 6. Cambiar el nombre del campo de error en Rails
- 7. MongoDB Shell: ¿acceso a colección con punto en el nombre?
- 8. ¿Es posible configurar el nombre del campo predeterminado de ObjectId en MongoDB?
- 9. Cómo cambiar el valor del campo asociado
- 10. "sistema". En un nombre de colección en MongoDB
- 11. Cómo configurar el nombre de la colección MongoDb para una clase en Spring Data
- 12. Modelo Nombre del campo en la plantilla
- 13. Especificación del nombre de la colección en RavenDB
- 14. Cómo usar el nombre del campo HTML en javascript si el nombre del campo contiene un "." (punto)?
- 15. cómo cambiar el límite del nombre de campo de la tabla Postgres?
- 16. ¿Cómo se usa el punto en el nombre del campo?
- 17. Cambiar el nombre del nombre del argumento en JAX-WS
- 18. Cómo cambiar el nombre del nodo XML
- 19. Cómo cambiar el nombre del modelo
- 20. ¿Cambiar el nombre del archivo en Cocoa?
- 21. Cómo imprimir_r en PHP una colección MongoDB?
- 22. cambiar el nombre del proyecto y el nombre del paquete
- 23. Mongoose - Nombre de la colección Force
- 24. ¿Cómo obtengo la fecha en que se creó una colección MongoDB utilizando el controlador MongoDB C#?
- 25. campo Mongodb no null delete
- 26. ¿Cambiar el nombre del proceso en C#?
- 27. MongoDB: tamaño del resultado de la consulta mayor que el tamaño de la colección
- 28. Campos de consulta en una colección MongoDB.
- 29. Cambiar el nombre del proceso en Linux
- 30. ¿Qué es el campo "__v" en MongoDB
La pregunta explícitamente pregunta cómo lograr esto sin $ rename ... – samkass
Aquí hay un error de sintaxis: el último '}' está fuera de lugar. Desea ejecutar 'db.collection_name.update ({}, {$ rename: {" oldname ":" newname "}}, false, true);'. – girasquid
-1 esto no funciona en Mongo 1.6.5 – opyate