Mongo 컬렉션을 JSON 형식으로 덤프


119

mongo 컬렉션을 json 형식으로 덤프하는 방법이 있습니까? 쉘에서 또는 Java 드라이버를 사용 중입니다. 최고의 성능을 가진 것을 찾고 있습니다.


mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase admin당신은을 지정할 수 있습니다 host, port, username, password이 기본 인증 데이터베이스처럼 admin.
Max Peng

답변:


177

Mongo에는 컬렉션을 덤프 할 수 있는 mongoexport 유틸리티 (문서 참조)가 포함되어 있습니다. 이 유틸리티는 기본 libmongoclient를 사용하며 가장 빠른 방법입니다.

mongoexport -d <database> -c <collection_name>

또한 도움이됩니다.

-o: 출력을 파일에 기록합니다. 그렇지 않으면 표준 출력이 사용됩니다 ( docs ).

--jsonArray: 한 줄에 하나의 json 객체 대신 유효한 json 문서를 생성합니다 ( docs ).

--pretty: 형식화 된 json 출력 ( docs )


8
-d 플래그를 사용하여 사용할 데이터베이스를 지정하십시오.
Reimund

8
--prettymongoexport -d mydatabase -c mycollection --pretty
깔끔하게

6
몽고가 다른 호스트에있는 경우, 여기에 몽고의 문서에서 예제 mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
쿨 어떻게 될지

--pretty2.6.10 버전에서 사라진 것 같습니다 .
icedwater

115

mongoexport / mongoimport를 사용하여 컬렉션을 덤프 / 복원합니다.

JSON 파일 내보내기 :

mongoexport --db <database-name> --collection <collection-name> --out output.json

JSON 파일 가져 오기 :

mongoimport --db <database-name> --collection <collection-name> --file input.json

경고 mongoimport하고 mongoexportJSON은 BSON에서 지원하는 유형의 하위 집합 만 나타낼 수 있으므로 모든 풍부한 BSON 데이터 유형을 안정적으로 보존하지 마십시오. 결과적으로 이러한 도구를 사용하여 내보내거나 가져온 데이터는 일부 충실도를 잃을 수 있습니다.

또한 http://bsonspec.org/

BSON은 인코딩 및 디코딩이 빠르도록 설계되었습니다. 예를 들어, 정수는 32 (또는 64) 비트 정수로 저장되므로 텍스트에서 구문 분석 할 필요가 없습니다. 이것은 작은 정수의 경우 JSON보다 더 많은 공간을 사용하지만 구문 분석이 훨씬 빠릅니다.

압축성 외에도 BSON은 JSON에서 사용할 수없는 추가 데이터 유형, 특히 BinData 및 Date 데이터 유형을 추가합니다.


1
"풍부한 BSON 데이터"는 살아남지 못할 것입니다 무슨의 예 있나요 mongoexport/ mongoimport왕복?
andrewdotn

1
JSON에서 지원되지 않는 날짜 및 바이너리와 같은 데이터 유형에 대한 지원을 추가합니다. 또한, 빠르게 인코딩 및 디코딩 bsonspec.org
Priyanshu 차우

5

다음은 참조 용 광산 명령입니다.

mongoexport --db AppDB --collection files --pretty --out output.json

윈도우 7 (MongoDB를 3.4)에, 하나는 장소에 cmd를 이동해야 mongod.exe하고 mongo.exe파일이 상주 => C:\MongoDB\Server\3.4\bin다른 그것이 recongnize하지 않습니다 말하는 작동하지 않습니다 mongoexport명령을 사용합니다.


MongoDB가 가져올 때 예상하는 어리석은 "단일 줄없는 쉼표"형식으로 일반 json을 포맷하는 포맷터를 아는 사람이 있습니까?
conor909


-2

모든 콜렉션을 덤프하려면 다음 명령을 실행하십시오.

mongodump -d {DB_NAME}   -o /tmp 

모든 컬렉션 데이터 jsonbson확장을 /tmp/{DB_NAME}디렉터리 에 생성합니다.


사실 그것은 여전히 :-( bson 및 metadata.bson 덤핑있다
프라 사드

9
이 대답은 틀 렸습니다. 형식으로 mongodump데이터를 출력 BSON합니다. 다른 답변 mongoexport은 올바른 도구로 올바르게 언급됩니다 .
Christian Dechery

이것은 나를 위해 일하고 있으며 모든 컬렉션을 bson 및 json 파일이있는 tmp 폴더로 출력합니다. mongodump -d {dbname} -o tmp
shyamzzp를 사용
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.