나는 이것이 오래된 질문이며 mongodump / mongorestore가 인덱스를 포함하여 100 % 충실한 결과를 원한다면 분명히 올바른 방법이라는 것을 알고 있습니다.
그러나 이전 버전과 새로운 버전의 MongoDB 사이에서 앞뒤로 호환되는 빠르고 더러운 솔루션이 필요했습니다. 특히 이상한 일이 없다면. 그리고 나는 원래 질문에 대한 답을 원했습니다.
위에 허용되는 다른 솔루션이 있지만이 Unix 파이프 라인은 비교적 짧고 달콤합니다.
mongo --quiet mydatabase --eval "db.getCollectionNames().join('\n')" | \
grep -v system.indexes | \
xargs -L 1 -I {} mongoexport -d mydatabase -c {} --out {}.json
이렇게하면 .json
각 컬렉션에 대해 적절한 이름의 파일 이 생성 됩니다.
데이터베이스 이름 ( "mydatabase")이 두 번 나타납니다. 데이터베이스가 로컬이라고 가정하고 자격 증명을 전달할 필요는 없지만 mongo
및 로 모두 쉽게 수행 할 수 mongoexport
있습니다.
내가 사용하고 있습니다 grep -v
폐기에 system.indexes
나는 새로운 하나에서 시스템 모음을 해석하려고 MongoDB를의 이전 버전을 원하지 않기 때문에. 대신 응용 프로그램에서 일반적인 ensureIndex
호출을 수행하여 인덱스를 다시 만들 수 있습니다.