MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment exporter les résultats de la requête MongoDB vers un fichier JSON

Les outils de base de données MongoDB incluent un utilitaire appelé mongoexport qui vous permet d'exporter des données MongoDB vers un fichier CSV ou JSON.

L'une des choses que vous pouvez faire avec cet utilitaire est d'exporter les résultats de la requête. Cet article vous montre comment utiliser mongoexport pour exporter les résultats de la requête MongoDB vers un fichier JSON.

Syntaxe

La syntaxe de mongoexport va comme ceci :

mongoexport --collection=<coll> <options> <connection-string>

Vous devez exécuter mongoexport commandes à partir de la ligne de commande de votre système (par exemple, un nouveau terminal ou une fenêtre d'invite de commande).

N'exécutez pas mongoexport commandes du mongo coquille.

Exemple

L'exemple de code suivant exporte les résultats d'une requête vers un fichier JSON :

mongoexport --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json

Ceci exporte une requête qui interroge une collection appelée pets dans le PetHotel base de données. La requête est exportée vers un fichier appelé dogs.json dans les data/ dossier.

Si le dossier n'existe pas, il est créé. Idem avec le fichier. Soit dit en passant, cela suppose qu'il n'y a pas de problèmes d'autorisation avec l'écriture d'un fichier à l'emplacement spécifié.

Dans cet exemple, je n'ai spécifié aucun hôte, port, authentification, etc., il exporte donc la collection de l'instance MongoDB exécutée sur le numéro de port localhost par défaut 27017 .

Vous pouvez également utiliser le --type paramètre pour spécifier explicitement JSON. La valeur par défaut est JSON, elle est donc facultative lors de l'exportation vers JSON.

Vous pouvez également inclure un --fields paramètre pour spécifier les champs à exporter. Par défaut, il exporte tous les champs lors de l'utilisation de JSON. Cependant, lors de l'exportation au format CSV, vous devez spécifier les champs à exporter.

Voici un exemple de l'exemple ci-dessus avec ces deux paramètres ajoutés :

mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.json

Vous trouverez ci-dessous une explication des paramètres que nous avons fournis ici.

Paramètre Description
--db
ou alors
-d
Spécifie la base de données sur laquelle exécuter mongoexport . Dans ce cas, la base de données s'appelle PetHotel .
Ce paramètre peut également être passé en utilisant -d (au lieu de --db ).
--collection
ou alors
-c
Spécifie la collection que nous voulons exporter (ou exécuter la requête). Dans ce cas, la collection s'appelle pets .
Ce paramètre peut également être passé sous la forme -c (au lieu de --collection ).
--type Spécifie le type de fichier exporté. Dans ce cas, nous spécifions json pour l'exporter dans un fichier JSON. Étant donné que JSON est la valeur par défaut, ce paramètre est facultatif lors de l'exportation vers JSON.
--fields Spécifie les champs que nous voulons exporter. Nous avons la possibilité d'exporter tous les champs ou seulement certains. Lors de l'exportation vers JSON, la spécification des noms de champ est facultative (c'est une exigence lors de l'exportation vers CSV).
--query
ou alors
-q
Spécifie la requête pour laquelle nous voulons exporter les résultats. Cela doit être entouré de guillemets simples (afin qu'il n'interagisse pas avec votre shell).
Ce paramètre peut également être passé en utilisant -q .
--out Spécifie le nom du fichier exporté et où il sera situé. Si vous ne spécifiez pas de nom de fichier, mongoexport écrit les données sur la sortie standard (stdout ).

Vérifier le fichier exporté

Vérifions que l'opération d'exportation a fonctionné comme prévu.

Exécutons d'abord la requête sur la collection d'origine.

use PetHotel
db.pets.find({ "type": "Dog" })

Résultat :

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

Nous pouvons donc voir qu'il y a 4 chiens, tous avec les mêmes champs que nous avons spécifiés dans notre opération d'exportation.

Ouvrons maintenant le fichier exporté dogs.json pour voir ce qu'il y a dedans :

{"_id":1.0,"name":"Wag","type":"Dog","weight":20.0}
{"_id":2.0,"name":"Bark","type":"Dog","weight":10.0}
{"_id":6.0,"name":"Fetch","type":"Dog","weight":17.0}
{"_id":7.0,"name":"Jake","type":"Dog","weight":30.0}

Toutes les données sont dans le fichier exporté comme prévu.

Exporter moins de champs

Vous pouvez spécifier moins de champs avec le --fields paramètre si vous le souhaitez.

Exemple :

mongoexport --db=PetHotel --collection=pets --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.json

Fichier résultant :

{"_id":1.0,"name":"Wag","weight":20.0}
{"_id":2.0,"name":"Bark","weight":10.0}
{"_id":6.0,"name":"Fetch","weight":17.0}
{"_id":7.0,"name":"Jake","weight":30.0}

Vous remarquerez que le _id le champ a été inclus dans le fichier exporté, même si je ne l'ai pas explicitement inclus dans le --fields argument. C'est parce que le _id est toujours inclus lors de l'exportation vers JSON, même si vous ne l'incluez pas explicitement. Ce n'est pas le cas lors de l'exportation au format CSV.

Contrôle d'accès/Authentification

Si vous n'utilisez pas localhost, vous pouvez utiliser le --host paramètre pour spécifier l'hôte, et --port pour spécifier le port. Vous pouvez également utiliser le --username paramètre pour spécifier le nom d'utilisateur et --password à pour le mot de passe. Si vous omettez le paramètre de mot de passe, vous serez invité à le saisir. Il y a aussi une --authenticationDatabase paramètre permettant de spécifier la base d'authentification dans laquelle l'utilisateur a été créé.

Exemple :

mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json

Vérifiez mongoexport

mongoexport fait partie du package MongoDB Database Tools. Les outils de base de données MongoDB sont une suite d'utilitaires de ligne de commande permettant de travailler avec MongoDB.

Si vous n'êtes pas sûr d'avoir les outils de base de données MongoDB/mongoexport installé, essayez d'exécuter la commande suivante dans votre terminal ou invite de commande pour vérifier :

mongoexport --version

Si vous l'avez, vous devriez voir les informations de version, etc. Si vous ne l'avez pas, vous pouvez utiliser les instructions d'installation sur le site Web de MongoDB pour l'installer sur votre système.

Où exécuter les commandes ?

N'oubliez pas, vous devez exécuter mongoexport commandes à partir de la ligne de commande de votre système (par exemple, un nouveau terminal ou une fenêtre d'invite de commande).