[MONGODB] '꽤'파일로 MongoDB의 쉘 출력을 인쇄하는 방법은 무엇입니까?
MONGODB'꽤'파일로 MongoDB의 쉘 출력을 인쇄하는 방법은 무엇입니까?
특히, 나는 파일에 MongoDB를 찾기 ()의 결과를 인쇄 할. 나는 쉘 창 크기로 전체 개체를 볼 수없는거야 그래서 JSON 개체가 너무 큽니다.
해결법
-
==============================
1.이 상호 작용하는 환경이기 때문에 쉘은 멋진하지만 숨겨진 기능을 제공합니다.
이 상호 작용하는 환경이기 때문에 쉘은 멋진하지만 숨겨진 기능을 제공합니다.
당신은 자바 스크립트 파일을 통해 몽고 commands.js에서 명령을 실행하면 아주 동일한 행동을받지 않습니다.
이 주위에 두 가지 방법이 있습니다.
(1) 쉘 밖으로 가짜 수 있도록 당신이 대화 형 모드에서 생각
$ mongo dbname << EOF > output.json db.collection.find().pretty() EOF
또는 (2) 인쇄 가능한 JSON으로 발견 ()의 결과를 번역 자바 스크립트를 사용하여
mongo dbname command.js > output.json
여기서 command.js이 (또는 이와 동등한 것)을 포함
printjson( db.collection.find().toArray() )
이 꽤 []를 포함하여, 결과의 배열을 인쇄합니다 - 당신이 배열과 printjson () 각 요소를 반복 할 수 있음을 원하지 않는 경우.
당신은 단지 하나의 자바 스크립트 문을 실행하는 경우 그런데 당신은 파일에 넣어 필요가 없습니다 대신 당신은 사용할 수 있습니다 :
$ mongo --quiet dbname --eval 'printjson(db.collection.find().toArray())' > output.json
-
==============================
2.터미널에이 일을 그냥 제정신이 방법의 레코드를 검사 할되기 때문에,이 같은 트릭을 사용할 수 있습니다 :
터미널에이 일을 그냥 제정신이 방법의 레코드를 검사 할되기 때문에,이 같은 트릭을 사용할 수 있습니다 :
mongo | tee somefile
정상적으로 세션을 사용하여 -. db.collection.find () 꽤 () 또는 당신이해야 할 무엇, 긴 출력하고 종료를 무시합니다. 파일 티가 쓴에서 세션의 사본이 될 것입니다.
때문에 대화 형 세션을 기대 몽고 쉘에 출력 이스케이프 시퀀스 및 기타 쓰레기를 포함 할 수 있음을 염두해야합니다. 적은 핸들이 우아합니다.
-
==============================
3.그냥 당신이 파일에 실행할 명령을 넣어, 데이터베이스 이름과 함께 쉘에 전달하고 출력을 파일로 리디렉션합니다. 당신의 find 명령이 find.js에 있고 데이터베이스가 foo는 경우에 따라서, 그 결과는 다음과 같습니다
그냥 당신이 파일에 실행할 명령을 넣어, 데이터베이스 이름과 함께 쉘에 전달하고 출력을 파일로 리디렉션합니다. 당신의 find 명령이 find.js에 있고 데이터베이스가 foo는 경우에 따라서, 그 결과는 다음과 같습니다
./mongo foo find.js >> out.json
-
==============================
4.쿼리를 착용 할 것 (예를 들어, db.someCollection.find을 (). 꽤 ()) 자바 스크립트 파일로, 이제 query.js을 가정 해 봅시다. 그런 다음 운영 체제의 쉘 사용하여 명령을 실행 :
쿼리를 착용 할 것 (예를 들어, db.someCollection.find을 (). 꽤 ()) 자바 스크립트 파일로, 이제 query.js을 가정 해 봅시다. 그런 다음 운영 체제의 쉘 사용하여 명령을 실행 :
몽고 yourDb
출력 _ 쿼리 결과는 '출력 _'라는 이름의 파일에있을 것입니다.
기본적으로 몽고는 IIRC 처음 20 문서를 출력합니다. 당신이 더 원하는 경우에 당신은 몽고 쉘, 예를 들어,에 배치 크기에 새로운 값을 정의 할 수 있습니다
DBQuery.shellBatchSize = 100.
-
==============================
5.인쇄 및 JSON.stringify을 사용하면 단순히 유효한 JSON 결과를 생성 할 수 있습니다. 출력에서 필터 쉘 소음 --quiet 플래그를 사용하십시오. 피할 .mongorc.js 평가 --norc 플래그를 사용하십시오. (I 때문에 무효 JSON 출력을 생성 내가 사용하는 것이 꽤-포맷터,의를해야했다) 사용 DBQuery.shellBatchSize은 =? 교체? 않도록 페이징 실제 결과의 한계.
인쇄 및 JSON.stringify을 사용하면 단순히 유효한 JSON 결과를 생성 할 수 있습니다. 출력에서 필터 쉘 소음 --quiet 플래그를 사용하십시오. 피할 .mongorc.js 평가 --norc 플래그를 사용하십시오. (I 때문에 무효 JSON 출력을 생성 내가 사용하는 것이 꽤-포맷터,의를해야했다) 사용 DBQuery.shellBatchSize은 =? 교체? 않도록 페이징 실제 결과의 한계.
그리고 마지막으로, 파이프 용도 티 파일로 출력 단자 :
// Shell: mongo --quiet --norc ./query.js | tee ~/my_output.json // query.js: DBQuery.shellBatchSize = 2000; function toPrint(data) { print(JSON.stringify(data, null, 2)); } toPrint( db.getCollection('myCollection').find().toArray() );
희망이 도움이!
-
==============================
6.하기 Asya Kamsky에서이 대답을 사용하여, 나는 Windows 용 한 줄 박쥐 스크립트를 썼다. 라인은 다음과 같습니다 :
하기 Asya Kamsky에서이 대답을 사용하여, 나는 Windows 용 한 줄 박쥐 스크립트를 썼다. 라인은 다음과 같습니다 :
몽고 --quiet % 1 --eval "printjson (DB. %의 2.find (). toArray ())"> output.json
그러던 어느 그것을 실행할 수 있습니다 :
exportToJson.bat DBNAME하는 콜렉션
-
==============================
7.또한 대한 mongoexport이 있지만, 나는 확실히 그것을 사용할 수있는 버전 이후 아니에요.
또한 대한 mongoexport이 있지만, 나는 확실히 그것을 사용할 수있는 버전 이후 아니에요.
예:
mongoexport -d dbname -c collection --jsonArray --pretty --quiet --out output.json
-
==============================
8.나는의 WriteFile () 함수 결과를 냈습니다.
나는의 WriteFile () 함수 결과를 냈습니다.
> writeFile("/home/pahan/output.txt", tojson(db.myCollection.find().toArray()))
몽고 쉘 버전은 4.0.9이었다
-
==============================
9.Neodan의 mongoexport 의해 답변으로 쿼리에 대한 -q 옵션에 매우 유용합니다. 또한 "$ OID"JSON의 표준 형식으로 ObjectId가 변환합니다. 예컨대 :
Neodan의 mongoexport 의해 답변으로 쿼리에 대한 -q 옵션에 매우 유용합니다. 또한 "$ OID"JSON의 표준 형식으로 ObjectId가 변환합니다. 예컨대 :
mongoexport -d yourdb -c yourcol --jsonArray --pretty -q '{"field": "filter value"}' -o output.json
from https://stackoverflow.com/questions/13104800/is-there-a-way-to-pretty-print-mongodb-shell-output-to-a-file by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게 몽고 콘솔에서의 ObjectId가에 의해 객체를 검색 할 수 있습니까? (0) | 2019.12.07 |
---|---|
[MONGODB] MongoDB를이 : 하나 개의 필드에있는 모든 문서를 업데이트 (0) | 2019.12.07 |
[MONGODB] 어떻게 몽구스와 기존 모음에 액세스 할 수? (0) | 2019.12.07 |
[MONGODB] 필드가 문자열을 포함하는 경우 확인 (0) | 2019.12.07 |
[MONGODB] MongoDB를 집계 파이프 라인 느린 첫 경기의 단계 이후 (0) | 2019.12.07 |