MongoDB 쉘 출력을 파일로 '예쁘게' 인쇄할 수 있는 방법이 있습니까?
의 결과를 하고 싶습니다.find()
파일로 변환합니다.JSON 개체가 너무 커서 셸 창 크기로 개체 전체를 볼 수 없습니다.
이 셸은 인터랙티브한 환경이기 때문에 훌륭하지만 숨겨진 기능을 제공합니다.
javascript 파일에서 mongo commands.js를 사용하여 명령을 실행하면 완전히 동일한 동작을 얻을 수 없습니다.
여기에는 두 가지 방법이 있습니다.
(1) 셸을 조작하여 인터랙티브 모드인 것처럼 보이게 한다.
$ mongo dbname << EOF > output.json
db.collection.find().pretty()
EOF
or or or openicle.
) 하여 (2) Javascript의 find()
한 JSON으로 합니다.
mongo dbname command.js > output.json
여기서 command.timeout에는 다음(또는 이에 상당하는 것)이 포함됩니다.
printjson( db.collection.find().toArray() )
이렇게 하면 다음과 같은 일련의 결과가 인쇄됩니다.[ ]
않으면 - 를 할 수 .printjson()
각 요소
참고로, Javascript 스테이트먼트를 1개만 실행하고 있다면 파일에 넣을 필요가 없고 대신 다음과 같이 사용할 수 있습니다.
$ mongo --quiet dbname --eval 'printjson(db.collection.find().toArray())' > output.json
단말기에서 이 작업을 수행하고 있으며, 적절한 방법으로 레코드를 검사하고 싶기 때문에 다음과 같은 방법을 사용할 수 있습니다.
mongo | tee somefile
와 같이 사용합니다.db.collection.find().pretty()
또는 필요한 경우 긴 출력을 무시하고 종료합니다. 안에 .tee
넣었었다
출력에는 인터랙티브세션이 예상되는 mongo 셸로 인해 이스케이프 시퀀스 및 기타 가비지가 포함될 수 있습니다. less
는 이것들을 우아하게 처리합니다.
실행할 명령을 파일에 넣은 다음 데이터베이스 이름과 함께 셸에 전달하고 출력을 파일로 리디렉션합니다.가 find에 있는 find.js
는 " " " " 입니다.foo
./mongo foo find.js >> out.json
쿼쿼((((((((((((((:db.someCollection.find().pretty()
javascript라고 query.js
그런 다음 다음 다음 명령을 사용하여 운영 체제의 셸에서 실행합니다.
mongo yourDb < query.js > outputFile
쿼리 결과는 'output' 파일에 있습니다.파일'을 클릭합니다.
디폴트로는 Mongo는 첫 20개의 문서 IIRC를 출력합니다.더 필요한 경우 Mongo 쉘에서 배치 크기에 대한 새로운 값을 정의할 수 있습니다.
DBQuery.shellBatchSize = 100
.
「」를 사용합니다.print
★★★★★★★★★★★★★★★★★」JSON.stringify
당신은 단지 유효한 것을 만들 수 있다. JSON
★★★★★★ 。--quiet
출력에서 셸 노이즈를 필터링하려면 flag를 사용합니다.--norc
.mongorc.js
평가하기.(사용하고 있는 예쁜 포맷으로 인해 유효하지 않은 JSON 출력이 생성되었기 때문에 이 작업을 수행해야 했습니다.)사용DBQuery.shellBatchSize = ?
교환?
호출을 피하기 위해 실제 결과의 제한과 함께.
그리고 마지막으로,tee
터미널 출력을 파일로 파이핑하려면:
// 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()
);
이게 도움이 됐으면 좋겠네요!
write File() 함수로 결과를 저장했습니다.
> writeFile("/home/pahan/output.txt", tojson(db.myCollection.find().toArray()))
Mongo 쉘 버전은 4.0.9였습니다.
새로운 mongodb 쉘 5.0+ mongosh에서는 Node.js fs 모듈을 내장하고 있기 때문에 새로운 mongosh 쉘에서는 출력을 예쁘게 인쇄할 수 있습니다.
fs.writeFileSync('output.json', JSON.stringify(db.test.find().toArray(), null, 2))
다음과 같은 문제 없이ObjectId
벗겨진 것 등이며, 이것은 더 나은 것입니다.printjson
또는.pretty()
.
상기의 코드는, 다음과 같이 동작합니다.
MongoDB 쉘(mongosh)은 MongoDB 도입과 상호 작용하기 위한 완전히 기능하는 JavaScript 및 Node.js 14.x REP 환경입니다.MongoDB 쉘을 사용하여 데이터베이스와 직접 쿼리 및 작업을 테스트할 수 있습니다.
옛것mongo
Legacy 로도 표시되어 있기 때문에, 이 새로운 방법으로 이행할 필요가 있습니다.
Asya Kamsky의 답변을 사용하여 Windows용 한 줄 배트 스크립트를 작성했습니다.선은 다음과 같습니다.
mongo --quiet %1 --eval "printjson(db.%2.find().toArray())" > output.json
다음으로 실행할 수 있습니다.
exportToJson.bat DbName CollectionName
또한 mongo export도 있습니다만, 어떤 버전부터 사용할 수 있는지 모르겠습니다.
예:
mongoexport -d dbname -c collection --jsonArray --pretty --quiet --out output.json
Neodan mongoexport의 답변은 다음과 같이 매우 유용합니다.-q
옵션을 지정합니다.변환도 가능합니다.ObjectId
JSON의 표준 포맷에 준거"$oid"
예:
mongoexport -d yourdb -c yourcol --jsonArray --pretty -q '{"field": "filter value"}' -o output.json
이 명령어를 사용하여 실행할 수 있습니다.
mongo admin -u <userName> -p <password> --quiet --eval "cursor = rs.status(); printjson(cursor)" > output.json
언급URL : https://stackoverflow.com/questions/13104800/is-there-a-way-to-pretty-print-mongodb-shell-output-to-a-file
'sourcetip' 카테고리의 다른 글
Woocommerce로 제품 자동 Import (0) | 2023.03.29 |
---|---|
json 문자열을 python 개체로 변환 (0) | 2023.03.29 |
Javascript에서 Razor Model 개체에서 JSON 개체를 가져오는 방법 (0) | 2023.03.29 |
익명 함수로 컨트롤러 래핑 (0) | 2023.03.29 |
@Configuration Properties:바인딩 클래스의 기본값 (0) | 2023.03.19 |