MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como clonar um banco de dados Mongodb com Mongoose


Tive muita dificuldade em fazer isso não tenho nenhuma referência.

No entanto, foi assim que eu fiz no meu final.

1, criei outra coleção dentro do mesmo
db: mydb
collections: books, oldbooks

2, como eu só sei me conectar a um banco de dados por vez, mantenho isso:
mongoose.connect(process.env.CONN_STR);

3, Em sua coleção existente, neste caso, livros, temos este código:
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, criei um Schema diferente para o backup para poder especificar o nome da coleção:
    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);

AVISO:especificamos a coleção em BackupBook Schema collection: 'oldbooks' . A ideia é replicar o esquema existente para o esquema de backup.

5, Busque e salve cada entrada na coleção:
 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:Crie uma coleção diferente como backup. Consulte cada entrada da coleção e salve no esquema de backup individualmente. Observe que o esquema de backup deve especificar o nome da coleção.