【问题标题】:Insert json file into mongodb将json文件插入mongodb
【发布时间】:2013-10-26 19:11:11
【问题描述】:

我是 MongoDB 的新手。在 Windows 中安装 MongoDB 后,我尝试使用以下命令插入一个简单的 json 文件:

C:\>mongodb\bin\mongoimport --db test --collection docs < example2.json

我收到以下错误:

connected to: 127.0.0.1
Fri Oct 18 09:05:43.749 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Field name expected: offset:43
Fri Oct 18 09:05:43.750
Fri Oct 18 09:05:43.750 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Expecting '{': offset:0
Fri Oct 18 09:05:43.751
Fri Oct 18 09:05:43.751 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Field name expected: offset:42
Fri Oct 18 09:05:43.751
Fri Oct 18 09:05:43.751 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Expecting '{': offset:0
Fri Oct 18 09:05:43.751
Fri Oct 18 09:05:43.752 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Field name expected: offset:44
Fri Oct 18 09:05:43.752
Fri Oct 18 09:05:43.752 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Expecting '{': offset:0
Fri Oct 18 09:05:43.752
Fri Oct 18 09:05:43.752 check 0 0
Fri Oct 18 09:05:43.752 imported 0 objects
Fri Oct 18 09:05:43.752 ERROR: encountered 6 error(s)s

example2.json

{"FirstName": "Bruce", "LastName": "Wayne", 
"Email": "bwayne@Wayneenterprises.com"}
{"FirstName": "Lucius", "LastName": "Fox", 
"Email": "lfox@Wayneenterprises.com"}
{"FirstName": "Dick", "LastName": "Grayson", 
"Email": "dgrayson@Wayneenterprises.com"}

将新的 json 文件导入 mongodb 需要做什么?

【问题讨论】:

  • mongoimport 要求每个文档都在一个新行上。

标签: mongodb


【解决方案1】:

以下命令对我有用

mongoimport --db test --collection docs --file example2.json

当我在每个文档中删除Email 属性之前的额外换行符时。

example2.json

{"FirstName": "Bruce", "LastName": "Wayne", "Email": "bwayne@Wayneenterprises.com"}
{"FirstName": "Lucius", "LastName": "Fox", "Email": "lfox@Wayneenterprises.com"}
{"FirstName": "Dick", "LastName": "Grayson", "Email": "dgrayson@Wayneenterprises.com"}

【讨论】:

    【解决方案2】:

    使用

    mongoimport --jsonArray --db test --collection docs --file example2.json
    

    它可能因为换行符而搞砸了。

    【讨论】:

    • 这个命令应该从 'mongoimport.exe' 所在的目录运行。 JSON 文件也应该存在于该目录中。
    • 该命令应该在 data/db 文件夹中运行,除非你会得到一个错误。
    • 只要“mongoimport”在路径中,您就可以在文件系统的任何位置运行该命令。只要包含路径,JSON 文件就可以位于磁盘上的任何位置: mongoimport --jsonArray --db test --collection docs --file c:\junk\cc.json
    【解决方案3】:

    在导入 JSON 文件时使用以下命令

    C:\>mongodb\bin\mongoimport --jsonArray -d test -c docs --file example2.json
    

    【讨论】:

      【解决方案4】:

      在 MS Windows 中,mongoimport 命令必须在正常的 Windows 命令提示符下运行,而不是在 mongodb 命令提示符下运行。

      【讨论】:

      • 对于 Unix 也是如此。 mongoimport 必须以 mongod 身份从普通终端运行。
      【解决方案5】:

      几周前发生在我身上。 mongoimport 的版本太旧了。一旦我更新到最新版本,它就会成功运行并导入所有文档。

      参考:http://docs.mongodb.org/master/tutorial/install-mongodb-on-ubuntu/?_ga=1.11365492.1588529687.1434379875

      【讨论】:

        【解决方案6】:

        这对我有用 - (来自 mongo shell)

        var file = cat('./new.json');     # file name
        use testdb                        # db name
        var o = JSON.parse(file);         # convert string to JSON
        db.forms.insert(o)                # collection name
        

        【讨论】:

        • 太酷了。使用 mongo shell 作为操作系统的解释器并使用“bash”命令作为函数。我什至不知道 mongo 可以像这样访问文件树。谢谢!
        • 在使用“cat”读取文件内容后,我在 JSON.parse(file) 处收到“SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data”。如果我用常量 json 字符串替换“cat”,解析就可以了!
        【解决方案7】:
        mongoimport --jsonArray  -d DatabaseN -c collectionName /filePath/filename.json
        

        【讨论】:

          【解决方案8】:

          以下两种方法效果很好:

          C:\>mongodb\bin\mongoimport --jsonArray -d test -c docs --file example2.json
          C:\>mongodb\bin\mongoimport --jsonArray -d test -c docs < example2.json
          

          如果集合在特定用户下,您可以使用-u -p --authenticationDatabase

          【讨论】:

            【解决方案9】:

            此方案适用于Windows机器。

            1. MongoDB 需要数据目录来存储数据。默认路径是C:\data\db。如果您没有数据目录,请在 C: 驱动器中创建一个,除非使用不同的 VolumeName,例如H:或任何其他相关的 VolumeName),它是您机器的根目录;

            2. 将要导入的 .json 文件放在:C:\data\db\ 中。

            3. 在运行命令之前将 mongoimport.exe 从C:\Program Files\MongoDB\Tools\100\binmongoimport.exe 的默认路径)复制粘贴到C:\Program Files\MongoDB\Server\[your_server_version]\bin 的目录

            4. C:\data\db\ 中打开命令提示符并通过支持您要导入的特定databasNamecollectionNamefileName.json 键入以下命令:

            mongoimport --db databaseName --collection collectionName --file fileName.json --type json --batchSize 1

            在此,

            • batchSize 可以是任意整数,随心所欲

            【讨论】:

              【解决方案10】:

              在 MongoDB 中使用 mongo shell 命令从文件(从系统/电脑的特定位置)插入 Json 数组数据。在执行下面的命令时,命令应该是单行的。

              var file = cat('I:/data/db/card_type_authorization.json'); var o = JSON.parse(文件); db.CARD_TYPE_AUTHORIZATION.insert(o);

              JSON 文件: card_type_authorization.json

              [{
              "code": "visa",
              "position": 1,
              "description": "Visa",
              "isVertualCard": false,
              "comments": ""
              },{
                  "code": "mastercard",
                  "position": 2,
                  "description": "Mastercard",
                  "isVertualCard": false,
                  "comments": ""
              }]
              

              【讨论】:

                【解决方案11】:

                单独打开命令提示符 并检查:

                C:\mongodb\bin\mongoimport --db db_name --collection collection_name

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-01-10
                  • 2021-05-13
                  • 1970-01-01
                  • 2020-04-17
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多