J'essayais de sauvegarder ma base de données Mongo sur le serveur du produit, puis de la restaurer sur le serveur de stockage intermédiaire ..__ et voici un problème, il y a beaucoup de collections dans la base de données, je veux igonre certaines collections que je ne possède pas ne voulez pas restaurer sur le serveur de transfert.
Je peux aborder cela en écrasant la base de données intermédiaire, en copiant la base de données productive, puis en rétablissant le produit en utilisant l'option --drop . et restaurer les collections spécifiées dans la base de données intermédiaire. euh .. c'est vraiment mauvais.
1. dump producting db
mongodump --Host product-server-Host --username abcd --password bcda -d db -o pruduct-dump-dir
2. dump staging db
mongodump --Host staging-server-Host --username abcd --password bcda -d db -o staging -dump-dir
3. restaurer toute la collection, puis restaurer la collection Restaurer pruduct-dump-dir sur le serveur de transfert
mongorestore --Host staging-server-Host --username abcd --password bcda --drop pruduct-dump-dir
mongorestore --Host staging-server-Host --username abcd --password bcda --drop --collection coll pruducting-dump-dir
Existe-t-il une option telle que ignore-collection quand je suis en train de dumpping? Toute suggestion sera appréciée: 3
Maintenant disponible à partir de la version 3.0.0
--excludeCollection <collection_name>
--excludeCollectionsWithPrefix <collection_prefix>
Répéter pour exclure plus de 1
Commander la documentation
Vous pouvez ajouter --collection COLLECTION_NAME
pour vider la collection dont vous avez besoin. Par défaut, si vous ne spécifiez pas une collection à vider d'une base de données, MongoDump dumpera toutes les collections de cette base de données.
mongodump --db test --excludeCollection=users --excludeCollection=salaries
A partir de Mongo 3.4, vous pouvez désormais spécifier une option --nsExclude <namespace pattern>
lors de la restauration à partir d'un vidage de la base de données Mongo, ce qui exclura les espaces de noms spécifiés de l'opération de restauration. Ceci est particulièrement utile lorsque l'opération mongodump
a déjà eu lieu.
Documentation officielle ici: https://docs.mongodb.com/manual/reference/program/mongorestore/#cmdoption-nsexclude
Vous pouvez exclure plusieurs collections avec des caractères génériques:
mongorestore --db test --nsExclude 'test.*_tmp'
Ou bien, spécifier plusieurs options --nsExclude
fonctionne aussi:
mongorestore --db test --nsExclude 'test.collection1' --nsExclude 'test.collection2'
Je devais faire la même chose en sauvegardant une base de données mongo. Si vous utilisez python (ou tout autre langage), vous pouvez également utiliser une approche similaire. Après avoir effectué le mongodump, il vous suffit de supprimer les fichiers bson & metadata.json de la collection indésirable.
import os
EXCLUDE_COLLECTIONS = ['collection_1', 'collection_2']
db_dump_path = "/Path/to/mongodump"
db_name = "name_of_db"
for collection_name in EXCLUDE_COLLECTIONS:
bson_file_path = os.path.join(db_dump_path, db_name, '{}.bson'.format(collection_name)
meta_file_path = os.path.join(db_dump_path, db_name, '{}.metadata.json'.format(collection_name)
if os.path.exists(bson_file_path) and os.path.exists(meta_file_path):
os.remove(bson_file_path)
os.remove(meta_file_path)