Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

203
Vistas
Una forma más rápida de eliminar todas las entradas de la colección mongodb eliminando la colección y recreando el esquema

Cuando quiero eliminar todos los objetos de los comments de mi colección mongoDB, hago esto con este comando:

 mongo $MONGODB_URI --eval 'db.comments.deleteMany({});'

Sin embargo, esto es muy lento cuando hay millones de registros dentro de la colección.

En una base de datos relacional como Postgres, simplemente copiaría la estructura de la colección, crearía una colección de comments2 , soltaría la colección de comments y cambiaría el nombre de comments2 a comments .

¿Es esto posible de hacer en MongoDB también? ¿O hay algún otro truco para acelerar el progreso?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Gracias, las respuestas inspiraron mi propia solución. Olvidé que MongoDB no tiene un esquema como una base de datos relacional.

Entonces lo que hice es esto:

1. volcar una colección vacía + los índices de la colección

 mongodump --host=127.0.0.1 --port=7001 --db=coral --collection=comments --query='{"id": "doesntexist"}' --out=./dump

Esto creará una carpeta ./dump con los contenidos comments.bson (vacío) y comments.metadata.json

2. Suelta la colección de comments

 mongo mongodb://127.0.0.1:7001/coral --eval 'db.comments.drop();'

3. Importe nuevos datos new_comments.json (diferente de comments.bson)

 mongoimport --uri=mongodb://127.0.0.1:7001/coral --file=new_comments.json --collection comments --numInsertionWorkers 12

Esto es mucho más rápido que agregar primero los índices y luego importar.

4. Vuelva a agregar índices

 mongorestore --uri=mongodb://127.0.0.1:7001/coral --dir dump/coral --nsInclude coral.comments --numInsertionWorkersPerCollection 12

Tenga en cuenta que --numInsertionWorkers acelera el proceso al dividir el trabajo en 12 CPU. ¿Cuántos cpus tienes se pueden encontrar en OSx con:

 sysctl -n hw.ncpu
over 4 years ago · Santiago Trujillo Denunciar

0

db.cities.aggregate([{ $match: {} }, { $out: "collection2" }]) en caso de que pueda iniciar sesión en el aviso de mongo y simplemente suelte la colección anterior. De lo contrario, el enfoque que ha publicado es el indicado.

mongoexport.exe /host: /puerto: /db:prueba /colección:colección1 /out:colección1.json mongoimport.exe /host: /puerto: /db:prueba /colección:colección2 /archivo:colección1.json

gracias neha

over 4 years ago · Santiago Trujillo Denunciar

0

Para la versión de mongodb> = 4.0, puede hacer esto a través de db.comments.renameCollection ("comments2") , pero es una operación que requiere muchos recursos y para colecciones más grandes es mejor que haga mongodump/mongorestore. Así que los mejores pasos de acción son:

 mongodump -dx -c comments -out dump.bson >use x >db.comments.drop() mongorestore -dx -c comments2 dump.bson

Por favor, tenga en cuenta que deleteMany({}) es una operación que requiere aún más recursos, ya que creará una sola entrada de registro para cada documento que elimine y propague a todos los miembros de replicaSet.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda