Pour la sauvegarde de la production, MongoDB recommande mongodump au lieu de mongoexport pour la précision des données. Cependant, je devrais "nettoyer" les données d'une base de données MongoDB avant de les sauvegarder. Je ne connais aucune option de nettoyage des données côté serveur autre que mongoexport . Deux questions:
- Mongoexport accède- t- il au cache MongoDB dans la RAM? Cela modifierait-il l'ensemble de travail en RAM comme le fait mongodump ?
- La commande mongodump a cette option --query . "Fournit un document JSON en tant que requête qui limite éventuellement les documents inclus dans la sortie de mongodump." Faut-il une requête pour exclure certains champs d'un document?
mongodump
sauvegarde instantanée ou un instantané du système de fichiers, ou écrire une exportation personnalisée simongoexport
ne fait pas ce dont vous avez besoin. Tous les outils ou programmes qui lisent des donnéesmongod
pourraient altérer votre ensemble de travail si vos données à exporter sont plus grandes que la RAM disponible. Les instantanés du système de fichiers sont moins perturbateursRéponses:
En réponse à votre première question, les deux outils (par défaut) parcourent simplement l'
_id
index pour récupérer les données, puis les écrivent sur le disque. Donc, oui, les deux outils auront un impact similaire sur votre ensemble de travail, c'est pourquoi je recommanderais généralement de les exécuter sur un secondaire (de préférence un secondaire caché si possible). Je vais faire écho à Stennie dans les commentaires ici et recommander d'autres méthodes de sauvegarde si vous traitez de grandes quantités de données.Pour la deuxième question, je suppose que vous recherchez un
mongodump
équivalent de l'--fields
option demongoexport
pour ne vider que des champs spécifiques. L' option de requête peut être utilisée pour filtrer les résultats, mais elle ne peut pas être utilisée avec une projection (pour sélectionner les champs retournés) - il s'agit d'une demande de fonctionnalité qui est suivie dans TOOLS-28 mais n'est pas encore planifiée. Comme Stennie l'a également mentionné, l'autre option ici est d'écrire un exportateur personnalisé qui correspond à vos besoins (et encore une fois, je recommanderais de l'exécuter contre un secondaire pour protéger votre ensemble de travail).la source
(désolé, non)
--query sélectionnera ou exclura des documents entiers, pas des champs.
Ce serait une bonne idée cependant:
la source
Mongoexport conserve en fait les types mais rend les données incohérentes. Si vous exportez un champ avec Ints et Longs, il l'exportera respectivement en tant qu'objets Numbers et JSON, ce qui peut le rendre plus difficile sur la route.
"Mode strict. Les représentations en mode strict des types BSON sont conformes au RFC JSON. Tout analyseur JSON peut analyser ces représentations en mode strict en tant que paires clé / valeur; cependant, seul l'analyseur JSON interne de MongoDB reconnaît les informations de type véhiculées par le format."
https://docs.mongodb.com/manual/reference/mongodb-extended-json/
la source