正确的方法来导入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