복붙노트

[MONGODB] CSV로 하위 문서에서 mongoexport 필드

MONGODB

CSV로 하위 문서에서 mongoexport 필드

나는 행운와 하위 문서에서 필드를 수출하려합니다. 여기 내 구문은;

mongoexport -d test -c accounts -f account_number,situses.coordinates -o coordinates.csv --type=csv  

출력은 ACCOUNT_NUMBER 포함 아니라 하위 문서에서 필드를 조정한다. 워드 프로세서에 따르면,이 작동하도록되어있다.

다음은 전체 situses의 하위 문서를 내보낼 것이다, 그러나 나는 단지 하나 개의 필드를 원한다.

mongoexport -d test -c accounts -f account_number,situses -o coordinates.csv --type=csv

난 그냥 하위 필드의 잘못이나 뭔가를 참조하는 건가요?

나는 MongoDB를 실행 해요 3.0.4

추가 정보

다음 구문은 MongoDB를 이전 버전에 근무 (의 2.6.x?). subdoc.0.fieldname 구문을 확인합니다.

mongoexport -d test -c accounts -f account_number,situses.0.coordinates -o coordinates.csv --csv  

그것은 바로 하위 문서가 제거 된 참조에 대한 지원이 나타납니다.

해결법

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

    1.당신의 문법 실수가 있습니다.

    당신의 문법 실수가 있습니다.

    당신은 사용해야합니다 :

    mongoexport --db tests --collection accounts --type=csv --fields account_number,situses --out coordinates.csv
    

    중첩 된 필드의 경우 당신은 사용해야합니다 :

    mongoexport --db tests --collection accounts --csv --fields 'account_number,situses.0.coordinates'  --out /home/vishwas/c1.csv 
    

    하위 문서와 몽고 3.0 편집 :

    당신은 같은 하위 문서에서 필요한 필드와 분리 수거를 작성해야합니다 -

    db.test.aggregate({"$unwind":"$situses"},{"$project":{"_id":0,"account_number":1,"siteUsesCo":"$situses.coordinates"}},{"$out" : "forcsv"}) 
    

    당신이 하위 문서에서 하나 개의 필드를 원하는 경우에 다음과 같은 집계를 사용 -

    db.test.aggregate({"$unwind":"$situses"},{"$limit":1},{"$project":{"_id":0,"account_number":1,"siteUsesCo":"$situses.coordinates"}},{"$out" : "forcsv"})
    

    그리고 forcsv 모음에서 내보내기 같은 -

    mongoexport --db test --collection forcsv --csv --fields 'account_number,siteUsesCo'  --out coordinates.csv
    

    그리고 삭제 수집 forcsv 수출 후.

  2. ==============================

    2.이 3.0.5에서 해결해야 할 알려진 버그가 같습니다. 이것 좀 봐; https://jira.mongodb.org/browse/TOOLS-657

    이 3.0.5에서 해결해야 할 알려진 버그가 같습니다. 이것 좀 봐; https://jira.mongodb.org/browse/TOOLS-657

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

    3.당신이 유연한 방법으로 출력을 구성 할 수 있습니다 그리고 하나 더 솔루션,

    당신이 유연한 방법으로 출력을 구성 할 수 있습니다 그리고 하나 더 솔루션,

    mongo host:port/test --quiet query.js -u username -p passw0rd > accounts.csv
    

    및 query.js :

    db = db.getSiblingDB('test');
    
    db.getCollection('accounts').find({}, {account_number:1, situses:1, _id:0}).forEach(
        function(item_data) { print(`${item_data.account_number},${item_data.situses[0].coordinates}`); });
    
  4. from https://stackoverflow.com/questions/30903293/mongoexport-fields-from-subdocuments-to-csv by cc-by-sa and MIT license