source

_id 필드가 없는 mongoexport

ittop 2023. 7. 1. 10:01
반응형

_id 필드가 없는 mongoexport

mongoexport를 사용하여 일부 데이터를 .json 형식의 파일로 내보내고 있지만 문서에 _id:IDVALUE tuples에 의해 도입된 큰 크기의 오버헤드가 있습니다.

비슷한 게시물을 찾았습니다 _id 필드 없이 MongoDB에서 데이터를 검색할 수 있는 방법이 있습니까?mongo에서 데이터를 검색할 때 _id 필드를 생략하지만 내보내지 않는 방법에 대해 설명합니다.다음을 사용하는 것이 좋습니다..Exclude("_id")저는 어떻게든 포함시키기 위해 mongoexport의 --query 매개 변수를 수정하려고 했습니다..Exclude("_id")매개 변수입니다. 그러나 지금까지 모든 시도가 실패했습니다.

이 작업을 수행하는 적절한 방법이 무엇인지 제안해 주십시오. 아니면 수출 후 기술을 사용하는 것으로 되돌려야 합니까?

감사해요.

필드를 제외할 방법이 없습니다(예:_id) mongoexport를 사용합니다.

중간 규모의 데이터베이스에서 사용할 수 있었던 대안은 다음과 같습니다.

mongo myserver/mydb --quiet --eval "db.mycoll.find({}, {_id:0}).forEach(printjson);" > out.txt

대규모 데이터베이스(수백만 개의 레코드)에서는 시간이 걸릴 수 있으며 이 작업을 실행하면 시스템에서 수행하려는 다른 작업에 영향을 미칩니다.

효과:

mongoexport --db db_name --collection collection_name | sed '/"_id":/s/"_id":[^,]*,//' > file_name.json

파이프 출력:mongoexport안으로jq그리고 그것을 제거합니다._id거기에 필드.

mongoexport --uri=mongodb://localhost/mydb --collection=my_collection \
  | jq 'del(._id)'

업데이트: jq에 링크 추가.

JSON에서 내보내기를 지정한 것은 알지만 CSV 데이터를 대체할 수 있다면 네이티브 몽고 내보내기가 작동하고 위의 솔루션보다 훨씬 빠를 것입니다.

mongoexport --db <dbName> --collection <collectionName> --csv --fields "<fieldOne>,<fieldTwo>,<fieldThree>" > mongoex.csv

mongoexport그런 선택권이 없는 것 같습니다.

ramda-cli 스트리핑으로_id다음과 같이 표시됩니다.

mongoexport --db mydb --collection mycoll -f name,age | ramda 'omit ["_id"]'

나는 quux00의 솔루션을 적용했지만,forEach(printjson)MongoDB Extended JSON 표기법을 출력으로 출력합니다(예:"last_update" : NumberLong("1384715001000").

대신 다음 행을 사용하는 것이 좋습니다.

db.mycoll.find({}, {_id:0}).forEach(function (doc) {

    print( JSON.stringify(doc) );
});
mongo <server>/<database> --quiet --eval "db.<collection>.find({}, {_id:0,<field>:1}).forEach(printjson);" > out.txt

변경을 실행할 쿼리가 있는 경우""로.''그리고 당신의 조건을 적으세요.find와 함께""맘에 들다find("age":13).

"_id"와 같은 하위 문서 정보를 제외하는 가장 간단한 방법은 csv로 내보낸 다음 도구를 사용하여 csv를 json으로 변환하는 것입니다.

mongoexport는 "_id"를 생략할 수 없습니다.

sed는 이를 위한 강력한 명령입니다.

mongoexport --db mydb --collection mycoll -f name,age | sed '/"_id":/s/"_id":[^,]*,//'

원래 답변은 MongoExport 명령을 사용하는 Exclude _id 필드에서 왔습니다.

mongoexport 명령에서 --type=csv 옵션을 사용하면 됩니다.

mongoexport --db=<db_name> --collection=<collection_name> --type=csv --field=<fields> --out=<Outfilename>.csv

MongoDb 버전 3.4의 경우 mongoexport 명령에서 --noHeaderLine 옵션을 사용하여 csv 내보내기에서도 필드 헤더를 제외할 수 있습니다.

자세한 내용: https://docs.mongodb.com/manual/reference/program/mongoexport/

파일로 내보내고 정규식을 사용하여 빈 값 바꾸기를 사용합니다.

"_id": "f5dc48e1-ed04-4ef9-943b-b1194a088b95"

저는 용한사를 요."_id": "(\w|-)*",

jq를 사용하면 이를 쉽게 달성할 수 있습니다.

mongoexport -d database -c collection --jsonArray | jq 'del(.[]._id)'

다을사필지보셨까니습정해드로 해 본 적이 ?--fields플래그? 언급되지 않은 모든 필드는 내보내기에서 제외됩니다.

를 위해 유관리를위별필파기사드수있다습도니용할고록을 .--fieldFile.

언급URL : https://stackoverflow.com/questions/12976145/mongoexport-without-id-field

반응형