Estoy haciendo desarrollo en MongoDB. Para fines totalmente no malvados, a veces quiero deshacerme de todo en una base de datos, es decir, eliminar cada colección y cualquier otra cosa que pueda existir, y empezar de cero. ¿Hay una sola línea de código que me permita hacer esto? Puntos de bonificación por dar tanto un método de consola MongoDB como un método de controlador MongoDB Ruby.Borrar todo en una base de datos MongoDB
Respuesta
Asimismo, desde la línea de comandos:
mongo DATABASE_NAME --eval "db.dropDatabase();"
No creo que esto funcione en 2.4.6. Mis registros aún existen. –
Uso
[databaseName]
db.Drop+databaseName();
drop collection
use databaseName
db.collectionName.drop();
escuchan son algunos pleno uso operaciones de borrado para mongodb utilizando consola mongo
Para eliminar documento en particular en las colecciones: db.mycollection.remove({name:"stack"})
Para eliminar todos los documentos en las colecciones: db.mycollection.remove()
Para eliminar la colección: db.mycollection.drop()
para eliminar la base de datos: primera ir a la base de datos use mydb
comando y luego
db.dropDatabase()
que tenía el mismo problema, cuando necesitaba para restablecer todas las colecciones pero no quería perder ningún usuario de la base de datos. Utilice la siguiente línea de código, si desea guardar la configuración de usuario para la base de datos:
use <whichever database>
db.getCollectionNames().forEach(function(c) { if (c.indexOf("system.") == -1) db[c].drop(); })
Este código va a ir a través de todos los nombres de colección de una base de datos y soltar los que no comienzan con "sistema". .
Según lo mencionado por @DanH, puede que le resulte más confiable usar 'remove' en lugar de' drop'. La opción 'eliminar' parece mantener restricciones en los campos de las colecciones que está borrando. Cuando empleamos el método 'drop', la restricción' unique' en uno de nuestros campos no se respetó después de la caída. – Scottymac
@Scottymac - mejor aún, agregue una rama 'else' (al' if (c.indexOf ("system.") == -1) ') que hace' remove' en lugar de 'drop'. De esta forma, no te quedarán colecciones vacías si ya no las usas –
Mejor que 'db [c]', utiliza 'db.getCollection (c)' que evita [errores cuando los nombres de las colecciones son dígitos] (http: //stackoverflow.com/a/24657123/70170). –
si desea eliminar sólo una base de datos y sus sub-colecciones utilizan este:
use <database name>;
db.dropDatabase();
si desea borrar todas las bases de datos en mongo a continuación, utilizar este :
db.adminCommand("listDatabases").databases.forEach(function(d)
{
if(d.name!="admin" && d.name!="local" && d.name!="config")
{
db.getSiblingDB(d.name).dropDatabase();
}
}
);
Gran respuesta ... esto es probablemente lo que el usuario quería llegar – robert
Seguí elSin embargo, si intenta utilizar esto para borrar la base de datos entre casos de prueba, es posible que finalmente encuentre problemas con las restricciones de índice que no se cumplen después de la caída de la base de datos.Como resultado, ya sea que usted necesita para enredar con ensureIndexes, o una ruta más simple sería evitar la dropDatabase alltogether y simplemente eliminar de cada colección en un bucle, tales como:
db.getCollectionNames().forEach(
function(collection_name) {
db[collection_name].remove()
}
);
En mi caso yo estaba corriendo esto desde la línea de comandos usando:
mongo [database] --eval "db.getCollectionNames().forEach(function(n){db[n].remove()});"
Gracias por esta sugerencia, estábamos usando' db [COLLECTION_NAME] .drop() 'y fue exhibiendo los mismos problemas que describiste con el método 'db.dropDatabase()'. Cambiar el 's/drop/remove /' funcionó brillantemente! – Scottymac
Descubrí que 'remove()' no funciona bien en MongoDB para Windows, y en su lugar tenía que hacer 'remove ({})' que funciona tanto en OSX como en Windows. – DanH
Gracias por el consejo, estamos en una plataforma Linux, pero vale la pena investigar un poco más. – Scottymac
al recopilar respuestas de @Robse y @DanH (!) felicitaciones, tengo la solución después de lo cual me satisface por completo:
db.getCollectionNames().forEach(function(collection_name) {
if (collection_name.indexOf("system.") == -1)
db[collection_name].drop();
else
db.collection_name.remove({});
});
Conéctese a su base de datos, ejecute el código.
Limpia la base de datos al eliminar las colecciones de usuarios y vaciar las colecciones del sistema.
Esto funciona bastante bien. Exactamente lo que necesitaba. –
forma más sencilla de eliminar una base de datos dicen blog:
> use blog
switched to db blog
> db.dropDatabase();
{ "dropped" : "blog", "ok" : 1 }
Para los desarrolladores de meteoros.
Abrir una segunda ventana de terminal mientras se ejecuta la aplicación en
localhost:3000
.En la carpeta de su proyecto, ejecute
meteor mongo
.coolName = new Mongo.Collection('yourCollectionName');
entonces simplemente entre
db.yourCollectionName.drop();
Verás automáticamente los cambios en el servidor local.
Para todos los demás.
db.yourCollectionName.drop();
Para eliminar todos los DBs de usar:
for i in $(mongo --quiet --host $HOSTNAME --eval "db.getMongo().getDBNames()" | tr "," " ");
do mongo $i --host $HOSTNAME --eval "db.dropDatabase()";
done
use <dbname>
db.dropAllUsers()
db.dropAllRoles()
db.dropDatabase()
MongoDB db.dropDatabase() documentation explicar la modificación introducida en el apartado 2.6:
cambiado en la versión 2.6: Este comando no elimina los usuarios asociados con la base de datos actual.
- Haz una lista de todos los DBS disponibles muestran DBS
- Elija la necesaria db uso
- gota la base de datos db.dropDatabase() // pocos comandos adicionales
- Lista de todas las colecciones disponibles en una base de datos muestran colecciones
- Eliminar una colección especificación db.collection.drop()
Espero que ayude
- 1. Restablecer la base de datos (purgar todo), luego inicializar una base de datos
- 2. Borrar todo/Inserción masiva
- 3. Arquitectura de base de datos MongoDB
- 4. crear base de datos segura en mongodb
- 5. DataSize base de datos en MongoDB
- 6. Almacenar imágenes en una base de datos MongoDB
- 7. MongoDB como la base de datos principal?
- 8. Cifrado de base de datos MongoDB
- 9. ¿MongoDB MapReduce bloquea la base de datos
- 10. borrar todo de la tabla
- 11. ¿Se puede hacer una base de datos relacional usando MongoDB?
- 12. Base de datos de más de 2 GB en MongoDB
- 13. Cómo borrar todo el segundo nivel de caché en NHibernate
- 14. ¿Cómo se almacenan los datos en una base de datos MongoDB en el disco?
- 15. PHP MongoDB, actualice el documento sin borrar el resto
- 16. Rendimiento de MongoDB con una estructura de datos en crecimiento
- 17. MongoDB Estructura de base de datos y prácticas recomendadas Ayuda
- 18. Diseño de esquema de base de datos MongoDB
- 19. sobrecarga de operadores borrar en una clase base
- 20. Cómo borrar/dejar/vaciar una colección MongoDb con Casbah
- 21. Aplicación web MongoDB +: base de datos por usuario
- 22. Borrar datos de ZedGraph
- 23. ¿Cómo relacionar datos en MongoDB?
- 24. Borrar todo y cargar la nueva versión
- 25. maps - borrar datos
- 26. base de datos mongodb con Java play 2.0
- 27. MongoDB o CouchDB como base de datos para dispositivos móviles?
- 28. ¿Cómo borrar una cuadrícula de datos ASP.NET?
- 29. borrar todo el registro de la tabla en mysql
- 30. Copiar datos de una tabla en una base de datos a otra base de datos separada
Nota : Esto no eliminará la base de datos, solo todos sus contenidos. – connorbode
@connorbode Gracias por esto. Lo he leído y de inmediato: ** "B-Pero OP no quiere eliminar la base de datos!" **. Comando muy engañoso !! –
Usar con precaución: si se encuentra en un entorno fragmentado utilizando wiredTiger y no tiene una base de datos de usuario e invoca dropDatabase, la base de datos se eliminará y podría volver a aparecer como primaria en un fragmento diferente cuando se agreguen nuevos registros. –