Estoy haciendo desarrollo en MongoDB. Para propósitos totalmente no malvados, a veces quiero eliminar todo lo que hay en una base de datos, es decir, eliminar cada colección, y cualquier otra cosa que pueda estar por ahí, y comenzar desde cero. ¿Hay una sola línea de código que me permita hacer esto? Puntos de bonificación por dar un método de consola MongoDB y un método de controlador MongoDB Ruby.
454
db.dropAllUsers();
Además, desde la línea de comando:
fuente
Tuve el mismo problema, cuando necesitaba 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 del usuario para la base de datos:
Este código pasará por todos los nombres de colección de una base de datos y descartará aquellos que no comiencen con "sistema".
fuente
remove
en lugar dedrop
. Laremove
opción parece mantener restricciones en los campos de las colecciones que está borrando. Cuando empleamos eldrop
método, launique
restricción en uno de nuestros campos no se cumplió después de la caída.else
rama (a laif (c.indexOf("system.") == -1)
) que lo haga enremove
lugar dedrop
. De esa manera, no te quedarán colecciones vacías si ya no las estás usandodb[c]
, usedb.getCollection(c)
que evita errores cuando los nombres de las colecciones son dígitos .db.getCollectionNames().forEach(function(c) { if (c.indexOf("system.") == -1) db.getCollection(c).drop(); })
Seguí la
db.dropDatabase()
ruta durante mucho tiempo, sin embargo, si está tratando de usar esto para borrar la base de datos entre casos de prueba, eventualmente puede encontrar problemas con las restricciones de índice que no se cumplen después de la caída de la base de datos. Como resultado, tendrá que meterse con sureIndexes, o una ruta más simple sería evitar la dropDatabase por completo y simplemente eliminar de cada colección en un bucle como:En mi caso, estaba ejecutando esto desde la línea de comandos usando:
fuente
db[collection_name].drop()
y exhibía los mismos problemas que describió con eldb.dropDatabase()
método. ¡Cambiando els/drop/remove/
trabajo brillantemente!remove()
no funciona bien en MongoDB para Windows, y en su lugar necesitaba hacer loremove({})
que funciona tanto en OSX como en Windows.Al compilar respuestas de @Robse y @DanH (¡felicitaciones!), Tengo la siguiente solución que me satisface por completo:
Conéctese a su base de datos, ejecute el código.
Limpia la base de datos eliminando las colecciones de usuarios y vaciando las colecciones del sistema.
fuente
Escuche algunos usan operaciones de eliminación completa para mongodb usando mongo shell
Para eliminar un documento particular en colecciones:
db.mycollection.remove( {name:"stack"} )
Para eliminar todos los documentos en colecciones:
db.mycollection.remove()
Para eliminar la colección:
db.mycollection.drop()
para eliminar la base de datos: primero vaya a esa base de datos por
use mydb
comando y luegofuente
Utilizar
fuente
en caso de que necesite soltar todo de una vez: (suelte todas las bases de datos a la vez)
fuente
fuente
si desea eliminar solo una base de datos y sus subcolecciones, use esto:
use <database name>;
db.dropDatabase();
si desea eliminar todas las bases de datos en mongo, use esto:
fuente
La forma más simple de eliminar una base de datos dice blog:
fuente
Para desarrolladores de Meteor.
Abra una segunda ventana de terminal mientras ejecuta su aplicación
localhost:3000
.En la carpeta de su proyecto, ejecute
meteor mongo
.coolName = new Mongo.Collection('yourCollectionName');
Luego simplemente ingrese
db.yourCollectionName.drop();
Verá automáticamente los cambios en su servidor local.
Para todos los demás.
db.yourCollectionName.drop();
fuente
Espero que ayude
fuente
yo prefiero
terminado
Si su colección era una colección especial, es decir, una colección con límite o una colección con un campo marcado como único, al soltar se borrará la colección en sí y cuando la colección se vuelva a crear, será una colección normal. Tendrá que definir las propiedades nuevamente. Por lo tanto, use
remove()
para borrar los documentos sin eliminar la colección y afectar el comportamiento de la colección.fuente
drop()
es casi instantáneo yremove({})
bloquea su base de datos durante minutos o decenas de minutos (dependiendo del tamaño de la colección).Para eliminar todos los DBs use:
fuente
Documentación de MongoDB db.dropDatabase () que explica la modificación introducida en 2.6:
fuente
En MongoDB 3.2 y posteriores,
Mongo().getDBNames()
en elmongo
shell se mostrará una lista de nombres de bases de datos en el servidor:Un
forEach()
bucle sobre la matriz podría llamardropDatabase()
para descartar todas las bases de datos enumeradas. Opcionalmente, puede optar por omitir algunas bases de datos importantes que no desea eliminar. Por ejemplo:Ejemplo de ejecución:
fuente