MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come clonare un database Mongodb con Mongoose

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.