使用节点将整个 mongo 数据库的内容(每个集合的内容)写入 JSON 文件?
Write the contents of the whole mongo database (contents of every collection) into JSON file using node?
如上所述,尝试为我的节点应用程序获取一个简单的备份功能,我想找到一种方法将我数据库中每个集合的内容写入一个大 JSON 文件并将其存储在服务器端。可能吗?
我正在使用 node 和 express 的 mongoose。
你试过mongodump
了吗?您只需输入:
mongodump
然后它将所有数据库备份到您 运行 所在目录的 dump
文件夹中。然后您可以使用 mongorestore
恢复它。有关详细信息,请参阅 MongoDB 文档的 backup with mongodump 部分。
从 Node
到 运行,您只需从 Node
文件调用 mongodump
。如果这是我的 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
文件夹,其中包含我的所有数据库。
这是我机器上的 gif 图像:
Joe Drumgoole 的评论中提到的另一个选项是 mongoexport
,它将以人类可读的格式为您提供输出。因此,如果您想要 todo-api
数据库中 users
集合中的所有文档,您可以使用此命令:
mongoexport -v -d todo-api -c users -o 'todo.backup.json' --pretty
这将在 todo-api
数据库的 users
集合的 todo.backup.json
处生成一个 JSON 文件。
这是我机器上的样子:
如果你需要从 MongoDB Atlas Cluster 中提取数据,这里是他们提供的文档(注意这里的一些信息与我的数据库相关,你需要使用你自己的数据) :
数据导入导出工具
将 PASSWORD 替换为管理员用户的密码,将 DATABASE 替换为您希望 import/export 到集群的数据库的名称,并将 COLLECTION 替换为您想要的集合的名称import/export 到您的集群。将 FILETYPE 替换为 json 或 csv 以指定文件类型。在适用的情况下,将 FILENAME 替换为输出文件(用于导出)或数据源(用于导入)的位置和名称。
注意:导出或导入 CSV 数据时,通常需要额外的 --fields 标志。有关其他详细信息,请参阅特定工具的文档。
mongoexport |生成存储在 MongoDB 实例中的数据的 JSON 或 CSV 导出
以下是在实际 Atlas Culsters 页面上可以在哪里找到该信息的一些屏幕截图:
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>
如上所述,尝试为我的节点应用程序获取一个简单的备份功能,我想找到一种方法将我数据库中每个集合的内容写入一个大 JSON 文件并将其存储在服务器端。可能吗?
我正在使用 node 和 express 的 mongoose。
你试过mongodump
了吗?您只需输入:
mongodump
然后它将所有数据库备份到您 运行 所在目录的 dump
文件夹中。然后您可以使用 mongorestore
恢复它。有关详细信息,请参阅 MongoDB 文档的 backup with mongodump 部分。
从 Node
到 运行,您只需从 Node
文件调用 mongodump
。如果这是我的 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
文件夹,其中包含我的所有数据库。
这是我机器上的 gif 图像:
Joe Drumgoole 的评论中提到的另一个选项是 mongoexport
,它将以人类可读的格式为您提供输出。因此,如果您想要 todo-api
数据库中 users
集合中的所有文档,您可以使用此命令:
mongoexport -v -d todo-api -c users -o 'todo.backup.json' --pretty
这将在 todo-api
数据库的 users
集合的 todo.backup.json
处生成一个 JSON 文件。
这是我机器上的样子:
如果你需要从 MongoDB Atlas Cluster 中提取数据,这里是他们提供的文档(注意这里的一些信息与我的数据库相关,你需要使用你自己的数据) :
数据导入导出工具
将 PASSWORD 替换为管理员用户的密码,将 DATABASE 替换为您希望 import/export 到集群的数据库的名称,并将 COLLECTION 替换为您想要的集合的名称import/export 到您的集群。将 FILETYPE 替换为 json 或 csv 以指定文件类型。在适用的情况下,将 FILENAME 替换为输出文件(用于导出)或数据源(用于导入)的位置和名称。 注意:导出或导入 CSV 数据时,通常需要额外的 --fields 标志。有关其他详细信息,请参阅特定工具的文档。
mongoexport |生成存储在 MongoDB 实例中的数据的 JSON 或 CSV 导出
以下是在实际 Atlas Culsters 页面上可以在哪里找到该信息的一些屏幕截图:
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>