Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

214
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda