programing

Mongo 컬렉션을 JSON 형식으로 덤프

magicmemo 2023. 4. 6. 21:30
반응형

Mongo 컬렉션을 JSON 형식으로 덤프

mongo 컬렉션을 json 형식으로 덤프할 수 있는 방법이 있나요?셸 또는 Java 드라이버를 사용합니다.성능이 가장 좋은 것을 찾고 있습니다.

Mongo에는 컬렉션을 덤프할 수 있는 mongo export 유틸리티(문서 참조)가 포함되어 있습니다.이 유틸리티는 네이티브 libmongoclient를 사용하며 가장 빠른 방법입니다.

mongoexport -d <database> -c <collection_name>

또, 다음과 같이 도움이 됩니다.

-o: 출력을 파일에 씁니다.그렇지 않으면 표준 출력이 사용됩니다(표준 출력).

--jsonArray: 한 줄에 1개의 json 오브젝트가 아닌 유효한 json 문서를 생성합니다(필수).

--pretty: 포맷된 json(표준)을 출력합니다.

mongoexport/mongo import를 사용하여 컬렉션을 덤프/복원합니다.

JSON 파일 내보내기:

mongoexport --db <database-name> --collection <collection-name> --out output.json

JSON 파일 가져오기:

mongoimport --db <database-name> --collection <collection-name> --file input.json

경고mongoimport그리고.mongoexportJSON은 BSON에서 지원되는 유형의 서브셋만 나타낼 수 있으므로 리치 BSON 데이터 유형을 모두 확실하게 유지하지는 않습니다.따라서 이러한 도구로 내보내거나 가져온 데이터는 충실도를 어느 정도 잃을 수 있습니다.

또, http://bsonspec.org/ 를 참조해 주세요.

BSON은 부호화 및 복호화가 고속이 되도록 설계되어 있습니다.예를 들어 정수는 32(또는 64)비트 정수로 저장되므로 텍스트 간에 구문 분석할 필요가 없습니다.이는 작은 정수에 대해 JSON보다 더 많은 공간을 사용하지만 구문 분석 속도가 훨씬 빠릅니다.

BSON은 콤팩트함과 더불어 JSON에서 사용할 수 없는 데이터 유형, 특히 BinData 및 Date 데이터 유형을 추가합니다.

참조용 mine 명령어는 다음과 같습니다.

mongoexport --db AppDB --collection files --pretty --out output.json

Windows 7(MongoDB 3.4)에서는 cmd를 다음 위치로 이동해야 합니다.mongod.exe그리고.mongo.exe파일이 상주 =>C:\MongoDB\Server\3.4\bin그렇지 않으면 알아채지 못한다고 해도 소용없다mongoexport명령어를 입력합니다.

Mongo 문서:

mongoexport 유틸리티는 수집을 가져와 JSON 또는 CSV로 내보냅니다.쿼리에 대한 필터 또는 출력할 필드 목록을 지정할 수 있습니다.

자세한 내용은 이쪽:http://www.mongodb.org/display/DOCS/mongoexport

다음은 특정 데이터베이스 내의 모든 컬렉션을 지정된 출력 디렉토리에 덤프하기 위해 쓰는 작은 노드 스크립트입니다.

#!/usr/bin/env node
import { MongoClient } from 'mongodb';
import { spawn } from 'child_process';
import fs from 'fs';

const DB_URI = 'mongodb://0.0.0.0:27017';
const DB_NAME = 'database-name';
const OUTPUT_DIR = 'output-directory';
const client = new MongoClient(DB_URI);

async function run() {
  try {
    await client.connect();

    const db = client.db(DB_NAME);
    const collections = await db.collections();

    if (!fs.existsSync(OUTPUT_DIR)) {
      fs.mkdirSync(OUTPUT_DIR);
    }

    collections.forEach(async (c) => {
      const name = c.collectionName;
      await spawn('mongoexport', [
        '--db',
        DB_NAME,
        '--collection',
        name,
        '--jsonArray',
        '--pretty',
        `--out=./${OUTPUT_DIR}/${name}.json`,
      ]);
    });
  } finally {
    await client.close();
    console.log(`DB Data for ${DB_NAME} has been written to ./${OUTPUT_DIR}/`);
  }
}
run().catch(console.dir);

언급URL : https://stackoverflow.com/questions/8991292/dump-mongo-collection-into-json-format

반응형