MongoDB의 동일한 데이터베이스 내에서 컬렉션 복사

Mehvish Ashiq 2023년1월30일
  1. MongoDB에서 작업하는 동안 동일한 데이터베이스 내에서 컬렉션 복사
  2. mongodumpmongorestore를 사용하여 MongoDB의 동일한 데이터베이스 내에서 컬렉션 복사
  3. aggregate() 메소드를 사용하여 MongoDB의 동일한 데이터베이스 내에서 컬렉션 복사
  4. forEach() 루프를 사용하여 MongoDB의 동일한 데이터베이스 내에서 컬렉션 복사
MongoDB의 동일한 데이터베이스 내에서 컬렉션 복사

동일한 데이터베이스 내에서 컬렉션을 복사하는 것은 놀라운 작업입니다. 시간과 노력을 절약합니다. 이 튜토리얼은 mongodump, mongorestore, aggregate()forEach()를 사용하여 MongoDB를 사용하여 동일한 데이터베이스 내에서 컬렉션을 복사하는 방법을 보여줍니다.

MongoDB에서 작업하는 동안 동일한 데이터베이스 내에서 컬렉션 복사

MongoDB의 이전 버전(예: 3.0 미만)에서는 copyTo() 메소드를 db.collection_name.copyTo()로 사용하여 컬렉션을 복사할 수 있지만 현재는 더 이상 사용되지 않습니다.

eval도 MongoDB 버전 4.2의 시작과 함께 더 이상 사용되지 않습니다. db.collection_name.copyTo()eval을 래핑합니다. 즉, MongoDB 버전 4.2 이상이 있는 경우 둘 중 하나를 사용하여 컬렉션을 복사할 수 없습니다.

새 버전의 MongoDB에는 동일한 데이터베이스 내에서 컬렉션을 복사하는 데 사용할 수 있는 몇 가지 다른 방법이 있습니다. 그 중 몇 가지가 여기에 나와 있습니다.

  1. mongodumpmongorestore 명령 사용
  2. aggregate() 메소드 사용
  3. forEach() 루프 사용

하나하나 배워보도록 하겠습니다.

mongodumpmongorestore를 사용하여 MongoDB의 동일한 데이터베이스 내에서 컬렉션 복사

MongoDB 데이터베이스 도구를 사용하여 동일한 데이터베이스 내에서 컬렉션을 복제/복사하는 가장 빠른 방법입니다. 특히 mongodumpmongorestore를 사용할 수 있습니다. 데이터베이스 도구는 MongoDB에서 작업하기 위한 명령줄 유틸리티 모음입니다.

Windows 명령 프롬프트에서 다음 명령을 사용하여 mongodumpmongorestore 버전을 확인할 수 있습니다. 해당 버전이 성공적으로 반환되면 데이터베이스 도구가 설치된 것입니다.

그렇지 않으면 에 따라 데이터베이스 도구를 설치하십시오.

예제 코드:

C:/Users/Dell> mongodump --version

예제 코드:

C:/Users/Dell> mongorestore --version

시스템의 명령줄에서 mongodumpmongorestore 명령을 실행해야 함을 기억하십시오(예: Ubuntu를 사용하는 경우 Windows OS 또는 터미널의 명령 프롬프트). mongo 셸에서 이 명령을 실행하지 마십시오.

MongoDB 작업을 위한 데이터베이스 도구가 있으면 다음 명령을 실행하여 동일한 데이터베이스 내에서 teachers 컬렉션을 덤프합니다. ’ test'.

예제 코드:

C:/Users/Dell> mongodump -d test -c teachers

출력:

2022-05-27T13:05:14.497+0500    writing test.teachers to dump\test\teachers.bson
2022-05-27T13:05:14.503+0500    done dumping test.teachers (3 documents)

위의 출력은 덤프 파일이 dump\test\teachers.bson에 작성되었음을 보여줍니다. 따라서 아래 명령을 사용하여 복원해야 합니다.

예제 코드:

C:/Users/Dell>mongorestore -d test -c teachers1 --dir=dump/<db>/<sourcecollection.bson>

출력:

2022-05-27T13:05:28.085+0500    checking for collection data in dump\test\teachers.bson
2022-05-27T13:05:28.088+0500    reading metadata for test.teachers1 from dump\test\teachers.metadata.json
2022-05-27T13:05:28.252+0500    restoring test.teachers1 from dump\test\teachers.bson
2022-05-27T13:05:28.312+0500    finished restoring test.teachers1 (3 documents, 0 failures)
2022-05-27T13:05:28.312+0500    no indexes to restore for collection test.teachers1
2022-05-27T13:05:28.313+0500    3 document(s) restored successfully. 0 document(s) failed to restore.

출력은 위와 같으며 이는 컬렉션이 성공적으로 복사되었음을 의미합니다. 현재 데이터베이스에 존재하지 않는 경우 teachers1이라는 대상 컬렉션이 생성됩니다.

다음으로 mongo 셸을 열고 다음 쿼리를 실행하여 복사된 컬렉션이 있는지 확인합니다.

예제 코드:

> show collections

출력:

teachers
teachers1

또는 mongoexport를 사용하여 데이터베이스(test)에서 컬렉션(teachers)을 내보낸 다음 mongoimport를 사용하여 동일한 데이터베이스 내의 teachers2 컬렉션으로 가져올 수도 있습니다.

예제 코드:

C:/Users/Dell> mongoexport -d test -c teachers | mongoimport -d test -c teachers2 --drop

aggregate() 메소드를 사용하여 MongoDB의 동일한 데이터베이스 내에서 컬렉션 복사

예제 코드:

> db.teachers.aggregate([{$out: "teachers3"}])

이 명령은 mongo 셸을 사용하여 실행됩니다. 그런 다음 show collections 명령을 사용하여 teachers3이 있는지 확인합니다.

예제 코드:

> show collections

출력:

teachers
teachers1
teachers2
teachers3

우리는 teachers 컬렉션에서 데이터를 반환하고 지정된 컬렉션(여기서는 teachers3)에 데이터를 기록하는 집계 파이프라인을 사용하고 있습니다. MongoDB 버전 4.4 이상이 있는 경우 이 접근 방식을 사용할 수 있습니다.

forEach() 루프를 사용하여 MongoDB의 동일한 데이터베이스 내에서 컬렉션 복사

예제 코드:

> db.teachers.find().forEach((doc) => {
    db.teachers4.insert(doc)
  })

다음 쿼리를 사용하여 teachers4가 동일한 데이터베이스 내에 있는지 확인합니다.

예제 코드:

> show collections

출력:

teachers
teachers1
teachers2
teachers3
teachers4

이 방법은 루프를 사용하기 때문에 위의 모든 방법에 비해 가장 느립니다. 소스 컬렉션의 모든 문서를 반복하고 대상 컬렉션에 하나씩 삽입합니다.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

관련 문장 - MongoDB Collection