Я розумію, що це досить давнє питання, і що 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 дзвінки, щоб відтворити індекси.