J'utilise mongodump à partir des outils mongo pour télécharger une sauvegarde de mon serveur. Cependant, lorsque j'exécute la commande, la commande renvoie "Champ non reconnu 'snapshot'".
L'erreur complète est:
Failed: error reading collection: Failed to parse: { find: "data", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "xxx" }. Unrecognized field 'snapshot'.
Mongodump --version renvoie:
mongodump version: built-without-version-string
git version: built-without-git-spec
Go version: go1.7.3
os: linux
Arch: AMD64
compiler: gc
OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
Je pourrais avoir besoin de rétrograder ma version? Sinon, je ne sais pas où aller d'ici ...
Vous avez certainement une différence de version entre mongodump et votre serveur mongoDB (3.6 vs 4.0).
Vous pouvez utiliser docker à la rescousse:
docker run --rm -v $(pwd):/workdir/ -w /workdir/ mongo:4.0 mongodump -h server -d $database --out /workdir/dump/
Avec docker, vous pouvez utiliser une version précise des outils cli sans l'installer.
Vous pouvez même spécifier un alias (en .bashrc):
alias mongodump="docker run --rm -v $(pwd):/workdir/ -w /workdir/ mongo:4.0 mongodump"
Remarque: Le dossier dans lequel le vidage est enregistré devra avoir des autorisations d'écriture pour que l'utilisateur mongodb dans le conteneur puisse écrire sur le volume monté. Cela peut être réalisé en définissant manuellement les autorisations sur le dossier de vidage avant d'exécuter la commande ci-dessus.
Dans l'exemple ci-dessus, ce serait: mkdir -m 777 dump
. Une fois le vidage terminé, les autorisations peuvent être modifiées pour revenir à une normale (c'est-à-dire Sudo chmod 755 dump
).
Ajouter --forceTableScan
Exemple:
mongodump --forceTableScan -d database_name -o target_directory
http://aug2uag.blogspot.com/2018/08/mongoexport-unrecognized-field-snapshot.html
J'étais également confronté au même problème dans CentOS avec les spécifications ci-dessous où mon mongodb authentifié avec nom d'utilisateur et mot de passe
J'ai utilisé la commande ci-dessous:
mongodump --forceTableScan -h <mongo database where it is hosted> -u <username> -d <databasename> -o /<output directory>/
Et entré le mot de passe mongodb lorsque vous y êtes invité.
Par défaut, mongodump utilise l'index _id lors de l'analyse des collections avec cet index est disponible (par exemple, les vues n'ont pas d'index). Spécifiez - forceTableScan pour demander à mongodump d'analyser les données de la collection sans utiliser l'index _id.
Pour plus d'informations, reportez-vous simplement à cette lien .