mongodb에 json 파일 삽입


82

저는 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의 요구 사항은 각 문서가 새 줄에 있어야합니다.
Samuel O'Malley

2
문제를 해결하는 답변을 수락 (틱)해야합니다.
수밋 Kamboj

답변:


112

사용하다

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

개행 문자 때문에 아마도 엉망이 될 것입니다.


이 명령은 'mongoimport.exe'가있는 디렉토리에서 실행해야합니다. JSON 파일도 해당 디렉토리에 있어야합니다.
Samdish Arora

명령은 오류가 발생하지 않는 한 data / db 폴더 내에서 실행되어야합니다.
Zeinab

56

아래 명령이 나를 위해 일했습니다.

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

37

이것은 나를 위해 일했습니다-(몽고 쉘에서)

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 셸을 OS 용 인터프리터로 사용하고 "bash"명령을 함수로 사용하려면 mongo가 이와 같이 파일 트리에 액세스 할 수 있다는 사실조차 몰랐습니다. 감사!
Rea Haas

16

JSON 파일을 가져 오는 동안 아래 명령 사용

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

4

다음 두 가지 방법이 잘 작동합니다.

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 : C : \ data \ db 경로에있는 json 파일의 이름
  • batchSize는 원하는대로 정수가 될 수 있습니다.

1
나를 많이 도왔다! 감사합니다
filipbarak

0

MS Windows에서 mongoimport 명령은 mongodb 명령 프롬프트가 아닌 일반 Windows 명령 프롬프트에서 실행해야합니다.


Unix도 마찬가지입니다. mongoimport는 mongod로 일반 터미널에서 실행해야합니다.
Doel 2015 년


0

MongoDB에서 mongo shell 명령을 사용하여 파일 (시스템 / PC의 특정 위치)에서 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": ""
}]

0

명령 프롬프트를 별도로 열고 다음을 확인하십시오.

C : \ mongodb \ bin \ mongoimport --db db_name --collection collection_name <filename.json

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.