Записать содержимое всей базы данных mon go (содержимое каждой коллекции) в файл JSON, используя узел? - PullRequest
0 голосов
/ 02 апреля 2020

Как и выше, пытаясь получить простую функцию резервного копирования для моего приложения узла, и я хочу найти способ записать содержимое каждой отдельной коллекции в моей базе данных в один большой JSON файл и сохранить его на стороне сервера. Возможно?

Я использую mon goose с узлом и express.

1 Ответ

1 голос
/ 02 апреля 2020

Вы пробовали mongodump? Вы просто набираете это:

mongodump

И затем он создает резервные копии всех ваших баз данных в папке dump в каталоге, в котором вы его запустили. Затем вы можете восстановить его с помощью mongorestore. Для получения дополнительной информации см. Резервную копию с разделом mongodump документации MongoDB.

Для запуска из Node вам нужно просто вызвать mongodump из файла Node. Если бы это был мой main.js файл:

// main.js
const { exec } = require("child_process");

exec("mongodump", (error, stdout, stderr) => {
    if (error) {
        console.log(`error: ${error.message}`);
        return;
    }
    if (stderr) {
        console.log(`stderr: ${stderr}`);
        return;
    }
    console.log(`stdout: ${stdout}`);
});

Тогда я мог бы запустить:

node main.js

И он сгенерирует папку dump со всеми моими базами данных в любом каталоге Я запустил команду.

Вот ее рисунок на моей машине:

dump

Другой вариант, как упомянуто в комментариях Джо Драмгул , mongoexport, что даст вам вывод в удобочитаемом формате. Итак, если вы хотите, чтобы все документы из коллекции users в вашей базе данных todo-api, вы использовали бы эту команду:

mongoexport -v -d todo-api -c users -o 'todo.backup.json' --pretty

И это сгенерирует файл JSON в todo.backup.json из коллекции users в базе данных todo-api.

Вот как это выглядит на моей машине:

export

Если вам нужно извлечь данные из Atlas Cluster MongoDB, вот документы, которые они предоставляют (обратите внимание, что некоторая информация здесь относится к моей БД, вам нужно будет использовать ваши собственные данные):

Инструменты импорта и экспорта данных

Замените ПАРОЛЬ паролем администратора, DATABASE - именем базы данных, которую вы будете sh для импорта / экспорта в ваш кластер, и COLLECTION с именем коллекции, которую вы sh будете импортировать / экспортировать в ваш кластер. Замените FILETYPE на json или csv, чтобы указать тип файла. Если применимо, замените FILENAME на местоположение и имя выходного файла (для экспорта) или источника данных (для импорта). ПРИМЕЧАНИЕ. При экспорте или импорте данных CSV часто требуется дополнительный флаг --fields. Дополнительные сведения см. В документации по инструменту Speci c.

mongoexport | производит JSON или CSV-экспорт данных, хранящихся в экземпляре MongoDB

Вот несколько скриншотов, где можно найти эту информацию на текущей странице Atlas Culsters:

Screenshot 1 Screenshot 2

mongoexport --host Atlas-Free-Cluster-shard-0/atlas-free-cluster-shard-00-00-czaoo.mongodb.net:27017,atlas-free-cluster-shard-00-01-czaoo.mongodb.net:27017,atlas-free-cluster-shard-00-02-czaoo.mongodb.net:27017 --ssl --username taskapp --password <PASSWORD> --authenticationDatabase admin --db <DATABASE> --collection <COLLECTION> --type <FILETYPE> --out <FILENAME>
...