将json文件插入mongodb


81

我是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?


2
mongoimport的要求是每个文档都必须换行。
塞缪尔·奥马利

2
您应该接受(勾选)可以解决问题的答案。
Sumit Kamboj

Answers:


108

使用

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

它可能由于换行符而混乱。


该命令应从存在“ mongoimport.exe”的目录中运行。JSON文件也应该存在于该目录中。
Samdish Arora,

该命令应该在data / db文件夹中运行,除非会出现错误。
Zeinab

55

下面的命令对我有用

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"}

36

这对我有用-(来自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用作os的解释器,并将“ bash”命令用作函数。我什至不知道mongo可以像这样访问文件树。谢谢!
Rea Haas

15

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

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

3

以下两种方法可以正常工作:

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



1

该解决方案适用于Windows计算机。

  1. MongoDB需要数据目录来存储数据。预设路径为C:\data\db。如果没有数据目录,请在C:驱动器中创建一个。(PS:data \ db表示目录“ data”内有一个名为“ db”的目录)

  2. 将您要导入的json放在以下路径中:C:\data\db\

  3. 打开命令提示符并键入以下命令

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

这里,

  • databaseName:您的数据库名称
  • collectionName:您的收藏名称
  • fileName:json文件的名称,该文件位于路径C:\ data \ db中
  • batchSize可以是您希望的任何整数

1
帮了我一大堆!谢谢
filipbarak

0

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


对于Unix也一样。mongoimport必须从普通终端作为mongod运行。
Doel


0

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

var file = cat('I:/data/db/card_type_authorization.json'); var o = JSON.parse(file); 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": ""
}]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.