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é?
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"})
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
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
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