Tôi đã gặp khó khăn khi làm việc này, tôi không có bất kỳ tài liệu tham khảo nào.
Tuy nhiên, đây là cách tôi đã làm cuối cùng của tôi.
1, Tôi đã tạo một bộ sưu tập khác trong cùng một
db: mydb
collections: books, oldbooks
2, Vì tôi chỉ biết cách kết nối với một cơ sở dữ liệu tại một thời điểm, tôi tuân theo điều này:
mongoose.connect(process.env.CONN_STR);
3, Trên bộ sưu tập hiện có của bạn, trong trường hợp này là sách, chúng tôi có mã này:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;
var BookSchema = new Schema({
name: String
})
module.exports = mongoose.model('Book', BookSchema);
4, Tôi đã tạo một Lược đồ khác cho bản sao lưu để tôi có thể xác định tên của bộ sưu tập:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;
var BackupSchema = new Schema({
name: String
}, {
collection: 'oldbooks'
})
module.exports = mongoose.model('BackupBook', BackupBookSchema);
LƯU Ý:rằng chúng tôi đã chỉ định bộ sưu tập trong Lược đồ sách dự phòng collection: 'oldbooks'
. Ý tưởng là sao chép lược đồ hiện có sang lược đồ dự phòng.
5, Tìm nạp và lưu từng mục nhập trong bộ sưu tập:
Book.find()
.exec((err, books) => {
if(err) throw err
else {
books.forEach( (book) => {
var backup = new BackupBook();
backup._id = book._id;
backup.name = book.name;
backup.save((err, backup) => {
})
})
}
})
TLDR:Tạo một bộ sưu tập khác làm bản sao lưu. Truy vấn từng mục nhập của bộ sưu tập sau đó lưu vào Lược đồ dự phòng riêng lẻ. Lưu ý, lược đồ sao lưu phải chỉ định tên của bộ sưu tập.