正确的方法来导入json文件到mongo
我一直在试图用一些导入的数据来使用mongo,但是我无法正确使用我的文档描述。
这是我使用mongoimport导入的.json的一个例子: https ://gist.github.com/2917854
mongoimport -d test -c example data.json
我注意到,尽pipe为每个商店创build了一个对象,但是我所有的文档都被导入到一个独特的对象中。
这就是为什么当我试图find一家商店或任何我想要查询的时候,所有的文档都会被返回。
db.example.find({"shops.name":"x"})
我想能够查询数据库获取产品的ID使用点符号类似于:
db.example.find({"shops.name":"x","categories.type":"shirts","clothes.id":"1"}
问题是所有的文档都像一个单一的对象一样导入。 问题是:如何
我是否需要导入对象来获得我想要的结果?
文档指出:
该实用程序采用每行包含1个JSON / CSV / TSVstring的单个文件并插入它。
在你正在使用的结构中 – 假设错误的要点是固定的 – 你基本上只input一个只有shops
字段的文档。
在将数据分解成单独的商店文档之后,使用类似的商品(商店作为集合名称,比使用example
更有意义)导入:
mongoimport -d test -c shops data.json
然后你可以像这样查询:
db.shops.find({"name":x,"categories.type":"shirts"})
有一个参数--jsonArray
:
接受在单个JSON数组中使用多个MongoDB文档表示的数据的导入
使用这个选项,你可以给它一个数组,所以你只需要去除外部对象的语法,即开始的所有内容,直到包括"shops" :
和}
结尾。
我自己使用一个叫做jq的小工具,它可以从命令行提取数组:
./jq '.shops' shops.json
从JSON导入
mongoimport --db "databaseName" --collection "collectionName" --type json --file "fileName.json" --jsonArray
JSON格式应该采用这种格式。
[ { name: "Name1", msg: "This is msg 1" }, { name: "Name2", msg: "This is msg 2" }, { name: "Name3", msg: "This is msg 3" } ]
从CSV导入
mongoimport --db "databaseName" --collection "collectionName" --type csv --file "fileName.csv" --headerline
更多信息
导入一个JSON
mongoimport
命令允许我们在特定的数据库和集合中导入可读的JSON
。 要在特定数据库和集合中导入JSON
数据,请键入mongoimport -d databaseName -c collectionName jsonFileName.json