Trudno mi było to zrobić, nie mam żadnych referencji.
Jednak tak właśnie zrobiłem po mojej stronie.
1, utworzyłem inną kolekcję w ramach tego samego
db: mydb
collections: books, oldbooks
2, Ponieważ wiem, jak połączyć się tylko z jedną bazą danych na raz, trzymam się tego:
mongoose.connect(process.env.CONN_STR);
3, W Twojej istniejącej kolekcji, w tym przypadku książek, mamy ten kod:
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, stworzyłem inny schemat dla kopii zapasowej, aby móc określić nazwę kolekcji:
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);
UWAGA:określiliśmy kolekcję w BackupBook Schema collection: 'oldbooks'
. Pomysł polega na zreplikowaniu istniejącego schematu do schematu zapasowego.
5, Pobierz i zapisz każdy wpis w kolekcji:
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:Utwórz inną kolekcję jako kopię zapasową. Przeszukuj każdy wpis w kolekcji, a następnie zapisz pojedynczo w schemacie kopii zapasowej. Pamiętaj, że schemat kopii zapasowej musi określać nazwę kolekcji.