Ho avuto difficoltà a farlo, non ho alcun riferimento.
Tuttavia, è così che ho fatto da parte mia.
1, ho creato un'altra raccolta all'interno della stessa
db: mydb
collections: books, oldbooks
2, poiché so solo come connettermi a un database alla volta, mi attengo a questo:
mongoose.connect(process.env.CONN_STR);
3, Sulla tua collezione esistente, in questo caso libri, abbiamo questo codice:
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, ho creato uno schema diverso per il backup in modo da poter specificare il nome della raccolta:
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);
AVVISO:abbiamo specificato la raccolta in BackupBook Schema collection: 'oldbooks'
. L'idea è di replicare lo schema esistente nello schema di backup.
5, Recupera e salva ogni voce nella raccolta:
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:crea una raccolta diversa come backup. Interroga ogni voce della raccolta, quindi salva individualmente nello schema di backup. Nota, lo schema di backup deve specificare il nome della raccolta.