![](/img/trans.png)
[英]How to create simple restful api for login and signup using node.js mongodb express.js
[英]How to backup a mongodb collection using express.js and Node.js
我想每個月備份我的userdatas
集合。
備份意味着:
我需要userdatas
數據並將其存儲在一些backupuserdatas
集合。 每 1 個月,一個批處理程序應該自動運行,並且應該將該月的數據(文檔)存儲在backupuserdatas
集合中。
我已經使用 node-cron 來運行批處理程序,但我不知道每個月都編寫一個查詢來備份我的userdatas
集合。
如何在 Node.js、express.js 和 mongodb 中執行此操作?
您可以在userdatas表上運行 find 查詢,然后在其中使用插入查詢在backupuserdatas表中插入數據。
我知道這不是一個好的解決方案,但對於小數據,您可以使用它。
要在內部運行多個查詢,您需要使用Async來同步節點的行為。 希望這會幫助你。
您可以通過在 node-cron 部分中使用以下代碼來實現,如下所示:
mongoose.users.find({}, function(err, result){
var data = {};
var curr_date = new Date();
data["user_data"] = result;
data["created"] = curr_date;
var savebackup = new mongoose.backup_user(data);
savebackup.save(function(err,res){
// save done
mongoose.users.remove({}, function(err, result){});
});
});
這里我創建了一個名為“backup_user”的備份表,用戶表是“users”。
每次運行 node-cron api 時,這都會將所有用戶數據保存到 backup_user 表。
您可以使用以下模塊https://www.npmjs.com/package/mongodb-backup https://www.npmjs.com/package/mongodb-restore
您還可以使用選項進行備份和恢復特定集合
mongodb-快照
https://github.com/lihaibh/mongodb-snapshot/tree/83b12d377a1ec387f0bcf121b294cdd45504ac76
安裝
npm i mongodb-snapshot
添加這個功能
async function mongoSnap(path, restore = false) {
const mongo_connector = new BKP.MongoDBDuplexConnector({
connection: { uri: mongoCString, dbname: dbName }
});
const localfile_connector = new BKP.LocalFileSystemDuplexConnector({
connection: { path: path }
});
const transferer = restore ?
new BKP.MongoTransferer({ source: localfile_connector, targets: [mongo_connector] }) :
new BKP.MongoTransferer({ source: mongo_connector, targets: [localfile_connector] }) ;
for await (const { total, write } of transferer) { }
}
使用喜歡
await mongoSnap('./backups/collections.tar'); // backup
await mongoSnap('./backups/collections.tar', true); // restore
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.