Трудно ми беше да направя това, нямам справка.
Аз обаче направих така.
1, създадох друга колекция в същата
db: mydb
collections: books, oldbooks
2, Тъй като знам как да се свързвам само с една база данни наведнъж, се придържам към това:
mongoose.connect(process.env.CONN_STR);
3, В съществуващата ви колекция, в този случай книги, имаме този код:
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, създадох различна схема за архивиране, за да мога да посоча името на колекцията:
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);
ЗАБЕЛЕЖКА:че посочихме колекцията в BackupBook Schema collection: 'oldbooks'
. Идеята е да се репликира съществуващата схема към резервната схема.
5, Извлечете и запишете всеки запис в колекцията:
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:Създайте различна колекция като резервно копие. Направете заявка за всеки запис от колекцията, след което го запазете в схемата за архивиране поотделно. Обърнете внимание, че схемата за архивиране трябва да указва името на колекцията.