복붙노트

[MONGODB] '꽤'파일로 MongoDB의 쉘 출력을 인쇄하는 방법은 무엇입니까?

MONGODB

'꽤'파일로 MongoDB의 쉘 출력을 인쇄하는 방법은 무엇입니까?

특히, 나는 파일에 MongoDB를 찾기 ()의 결과를 인쇄 할. 나는 쉘 창 크기로 전체 개체를 볼 수없는거야 그래서 JSON 개체가 너무 큽니다.

해결법

  1. ==============================

    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. ==============================

    2.터미널에이 일을 그냥 제정신이 방법의 레코드를 검사 할되기 때문에,이 같은 트릭을 사용할 수 있습니다 :

    터미널에이 일을 그냥 제정신이 방법의 레코드를 검사 할되기 때문에,이 같은 트릭을 사용할 수 있습니다 :

    mongo | tee somefile
    

    정상적으로 세션을 사용하여 -. db.collection.find () 꽤 () 또는 당신이해야 할 무엇, 긴 출력하고 종료를 무시합니다. 파일 티가 쓴에서 세션의 사본이 될 것입니다.

    때문에 대화 형 세션을 기대 몽고 쉘에 출력 이스케이프 시퀀스 및 기타 쓰레기를 포함 할 수 있음을 염두해야합니다. 적은 핸들이 우아합니다.

  3. ==============================

    3.그냥 당신이 파일에 실행할 명령을 넣어, 데이터베이스 이름과 함께 쉘에 전달하고 출력을 파일로 리디렉션합니다. 당신의 find 명령이 find.js에 있고 데이터베이스가 foo는 경우에 따라서, 그 결과는 다음과 같습니다

    그냥 당신이 파일에 실행할 명령을 넣어, 데이터베이스 이름과 함께 쉘에 전달하고 출력을 파일로 리디렉션합니다. 당신의 find 명령이 find.js에 있고 데이터베이스가 foo는 경우에 따라서, 그 결과는 다음과 같습니다

    ./mongo foo find.js >> out.json
    
  4. ==============================

    4.쿼리를 착용 할 것 (예를 들어, db.someCollection.find을 (). 꽤 ()) 자바 스크립트 파일로, 이제 query.js을 가정 해 봅시다. 그런 다음 운영 체제의 쉘 사용하여 명령을 실행 :

    쿼리를 착용 할 것 (예를 들어, db.someCollection.find을 (). 꽤 ()) 자바 스크립트 파일로, 이제 query.js을 가정 해 봅시다. 그런 다음 운영 체제의 쉘 사용하여 명령을 실행 :

    몽고 yourDb 출력 _

    쿼리 결과는 '출력 _'라는 이름의 파일에있을 것입니다.

    기본적으로 몽고는 IIRC 처음 20 문서를 출력합니다. 당신이 더 원하는 경우에 당신은 몽고 쉘, 예를 들어,에 배치 크기에 새로운 값을 정의 할 수 있습니다

    DBQuery.shellBatchSize = 100.

  5. ==============================

    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. ==============================

    6.하기 Asya Kamsky에서이 대답을 사용하여, 나는 Windows 용 한 줄 박쥐 스크립트를 썼다. 라인은 다음과 같습니다 :

    하기 Asya Kamsky에서이 대답을 사용하여, 나는 Windows 용 한 줄 박쥐 스크립트를 썼다. 라인은 다음과 같습니다 :

    몽고 --quiet % 1 --eval "printjson (DB. %의 2.find (). toArray ())"> output.json

    그러던 어느 그것을 실행할 수 있습니다 :

    exportToJson.bat DBNAME하는 콜렉션

  7. ==============================

    7.또한 대한 mongoexport이 있지만, 나는 확실히 그것을 사용할 수있는 버전 이후 아니에요.

    또한 대한 mongoexport이 있지만, 나는 확실히 그것을 사용할 수있는 버전 이후 아니에요.

    예:

    mongoexport -d dbname -c collection --jsonArray --pretty --quiet --out output.json
    
  8. ==============================

    8.나는의 WriteFile () 함수 결과를 냈습니다.

    나는의 WriteFile () 함수 결과를 냈습니다.

    > writeFile("/home/pahan/output.txt", tojson(db.myCollection.find().toArray()))
    

    몽고 쉘 버전은 4.0.9이었다

  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
    
  10. 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