将json文件导入mongo的正确方法

将json文件导入mongo的正确方法,json,mongodb,nosql,Json,Mongodb,Nosql,我一直试图在导入一些数据时使用mongo,但无法将其正确用于文档描述 这是使用mongoimport导入.json的一个示例: 我注意到,尽管为每个商店创建了一个对象,但我所有的文档都被导入到一个唯一的对象中 这就是为什么当我试图查找商店或任何我想查询的东西时,所有文档都会返回 db.example.find({"shops.name":"x"}) 我希望能够通过使用点表示法查询db以通过id获得产品,类似于: db.example.find({"shops.name":"x","catego

我一直试图在导入一些数据时使用mongo,但无法将其正确用于文档描述

这是使用mongoimport导入.json的一个示例:

我注意到,尽管为每个商店创建了一个对象,但我所有的文档都被导入到一个唯一的对象中

这就是为什么当我试图查找商店或任何我想查询的东西时,所有文档都会返回

db.example.find({"shops.name":"x"})
我希望能够通过使用点表示法查询db以通过id获得产品,类似于:

db.example.find({"shops.name":"x","categories.type":"shirts","clothes.id":"1"}
问题是所有文档都像单个对象一样导入。问题是:如何
是否需要导入对象以获得所需结果?

请注意:

此实用程序获取一个文件,该文件每行包含1个JSON/CSV/TSV字符串,并将其插入

在您使用的结构中-假设要点上的错误已修复-您实际上是导入一个只有
shops
字段的文档

将数据分解为单独的商店文档后,使用以下内容导入(商店是集合名称,比使用
示例
)更有意义):

然后您可以进行如下查询:

db.shops.find({"name":x,"categories.type":"shirts"})

有一个参数--jsonArray:

在单个JSON数组中接受由多个MongoDB文档表示的数据导入 使用此选项,您可以为其提供一个数组,因此您只需去除外部对象语法,即开始时的所有内容,直到并包括
“shops”:
,以及结束时的
}

我自己使用一个名为的小工具,可以从命令行提取数组:

./jq '.shops' shops.json
导入JSON
命令
mongoimport
允许我们在特定数据库&集合中导入人类可读的
JSON
。要在特定数据库和集合中导入
JSON
数据,请键入
mongoimport-d databaseName-c collectionName jsonFileName.JSON
从JSON导入

mongoimport --db "databaseName" --collection "collectionName" --type json --file "fileName.json" --jsonArray
JSON格式应为此格式。(对象数组)

从CSV导入

mongoimport --db "databaseName" --collection "collectionName" --type csv --file "fileName.csv" --headerline
更多信息


您的链接在顶部有一个额外的“a”end@ErenG哟!谢谢你的警告!;)
mongoimport --db "databaseName" --collection "collectionName" --type json --file "fileName.json" --jsonArray
[
    { name: "Name1", msg: "This is msg 1" },
    { name: "Name2", msg: "This is msg 2" },
    { name: "Name3", msg: "This is msg 3" }
]
mongoimport --db "databaseName" --collection "collectionName" --type csv --file "fileName.csv" --headerline