【问题标题】:Proper way to import json file to mongo将json文件导入mongo的正确方法
【发布时间】:2012-06-12 14:42:33
【问题描述】:

我一直在尝试使用 mongo 导入一些数据,但我无法在我的文档描述中正确使用它。

这是我使用 mongoimport 导入的 .json 示例:https://gist.github.com/2917854

mongoimport -d test -c example data.json

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

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

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

我希望能够使用点符号查询数据库以通过 id 获取产品:

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

问题是所有文档都像单个对象一样导入。问题是:如何
我需要导入对象以获得我想要的结果吗?

【问题讨论】:

  • 您的链接末尾有一个额外的“a”
  • @ErenGüven 哎呀!感谢您的警告! ;)

标签: json mongodb nosql


【解决方案1】:

Docs 请注意:

此实用程序采用每行包含 1 个 JSON/CSV/TSV 字符串的单个文件并将其插入。

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

将数据分解为单独的商店文档后,使用类似(商店是集合名称,比使用 example 更有意义)导入:

mongoimport -d test -c shops data.json

然后你可以像这样查询:

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

【讨论】:

    【解决方案2】:

    有一个参数--jsonArray

    接受在单个 JSON 数组中导入由多个 MongoDB 文档表示的数据

    使用此选项,您可以为其提供一个数组,因此您只需要剥离外部对象语法,即从开头直到 "shops" : 和末尾的 } 的所有内容。

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

    ./jq '.shops' shops.json
    

    【讨论】:

      【解决方案3】:

      从 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
      

      更多信息

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

      【讨论】:

        【解决方案4】:

        导入 JSON

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-12-27
          • 1970-01-01
          • 2011-09-03
          • 1970-01-01
          • 2018-01-17
          • 2020-03-15
          • 1970-01-01
          相关资源
          最近更新 更多