web-dev-qa-db-fra.com

Manière correcte d'importer un fichier JSON sur Mongo

J'ai essayé d'utiliser mongo avec certaines données importées, mais je ne parviens pas à les utiliser correctement avec ma description de document.

Voici un exemple d'importation .json avec mongoimport: https://Gist.github.com/2917854

mongoimport -d test -c example data.json

J'ai remarqué que tout mon document est importé dans un objet unique malgré la création d'un objet pour chaque boutique.

C'est pourquoi lorsque j'essaie de trouver un magasin ou tout ce que je veux interroger, tout le document est renvoyé.

db.example.find({"shops.name":"x"})

Je veux être en mesure d'interroger la base de données pour obtenir des produits par l'ID en utilisant la notation par points quelque chose semblable à

db.example.find({"shops.name":"x","categories.type":"shirts","clothes.id":"1"}

Le problème est que tout le document est importé comme un seul objet. La question est: comment
Dois-je importer l'objet pour obtenir le résultat souhaité?

38
Nahikariii

Docs notez que:

Cet utilitaire prend un seul fichier contenant 1 chaîne JSON/CSV/TSV par ligne et l'insère.

Dans la structure que vous utilisez (en supposant que les erreurs sur le Gist soient corrigées), vous importez essentiellement un document avec uniquement le champ shops.

Après avoir décomposé les données dans des documents de magasin distincts, importez à l'aide de quelque chose comme (les magasins étant le nom de la collection, il est plus logique d'utiliser example):

mongoimport -d test -c shops data.json

et alors vous pouvez interroger comme:

db.shops.find({"name":x,"categories.type":"shirts"})
37
Eren Güven

Il y a un paramètre --jsonArray:

Accepter l'importation de données exprimées avec plusieurs documents MongoDB dans un seul tableau JSON

En utilisant cette option, vous pouvez alimenter un tableau, il vous suffit donc de supprimer la syntaxe de l'objet externe, c'est-à-dire tout au début, jusqu'au "shops" : inclus, et le } à la fin.

J'utilise moi-même un petit outil appelé jq qui permet d'extraire le tableau à partir de la ligne de commande:

./jq '.shops' shops.json
23
The Nail

IMPORT DE JSON

mongoimport --db "databaseName" --collection "collectionName" --type json --file "fileName.json" --jsonArray

Le format JSON doit être dans ce format. (Tableau d'objets)

[
    { name: "Name1", msg: "This is msg 1" },
    { name: "Name2", msg: "This is msg 2" },
    { name: "Name3", msg: "This is msg 3" }
]

IMPORT DE CSV

mongoimport --db "databaseName" --collection "collectionName" --type csv --file "fileName.csv" --headerline

Plus d'informations

https://docs.mongodb.com/getting-started/Shell/import-data/

8
Mahesh K

Importer un JSON

La commande mongoimport nous permet d'importer JSON lisible par l'homme dans une base de données et une collection spécifiques Pour importer une donnée JSON dans une base de données spécifique et une collection, tapez mongoimport -d databaseName -c collectionName jsonFileName.json

0
student