MongoDB(몽고db)를 사용하면서 외부파일을 가져오거나 내보낼 경우가 있을 수 있습니다. 백업을 위한 경우도 있으며 아니면 서버를 이전하면서 기존의 데이터베이스를 마이그레이션(Migration)하려고 많은 데이터를 한번에 옮길 수도 있겠죠~ 그럼 아래는 어떻게 import 또는 export하는지 알아보겠습니다.



# MongoDB 내보내기, export()
현재의 데이터베이스를 외부 파일로 내보내는 방법입니다. 이때 mongoexport를 사용합니다. 대량의 데이터를 백업하기 위한 방법으로도 사용할 수 있겠죠.
mongoexport -d databaseName -c collectionName -o myfile.json --port 27017

위 명령어를 실행하면 해당 경로에 myfile.json이라는 파일이 생성됩니다. 해당 파일에는 각각의 데이터가 담겨있겠죠. 여기서 각각의 옵션은 아래 내용입니다.

  • -d 또는 --database 데이터베이스 이름
  • -c 또는 --collection 컬렉션 이름
  • ​​​​​-o 또는 --output 저장할 파일 이름
  • ​​​​​​​--port 포트번호

만약 로그인이 필요한 경우는 어떻게할까요? user와 password설정이 필요하며 이 글 제일 하단을 보시면 나와있습니다.

참고로 원하는 필드만 설정해서 보낼수도 있습니다. 이때는 -f 옵션을 사용합니다.



# MongoDB 가져오기, import()외부의 파일에서 현재의 데이터베이스로 불러오는 경우 mongoimport를 사용하면 간단합니다. 아래 예제를 봐주세요. mongoimport의 경우 --file로 불러올 파일을 설정합니다. export의 --out과는 이름이 다른점 주의하세요!!
mongoimport -d databaseName -c collectionName --file myFile.json --jsonArray --port 27017

--jsonArray는 파일의 포맷이 json 배열로 저장된 경우 사용합니다.



# mongoexport, mongoimport 로그인이 필요한 경우

계정 설정의 인증이 필요한 경우 유저 아이디 및 패스워드가 필요합니다. 만약 아이디와 패스워드가 있는 경우 아래처럼 내보내거나 가져올 수 있습니다.
mongoexport -u username -p 'password' -d databaseName -c collectionName --out myfile.json --port 27017 --authenticationDatabase admin


! 인증시 꼭 --authenticationDatabase admin 추가할 것
위 명령어에서 --authenticationDatabase admin을 추가하지 않으면 다음과 같이 인증에러가 발생할 수 있습니다. user와 password만 설정하는 경우도 발생할 수 있으니 참고하세요.
{ ... "auth failed", code: 18 }

여기까지 인증에 대한 부분을 알아봤습니다.