sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo clonar una base de datos Mongodb con Mongoose

Me costó mucho hacer esto no tengo ninguna referencia.

Sin embargo, así es como lo hice por mi parte.

1, creé otra colección dentro de la misma

db: mydb
collections: books, oldbooks

2, dado que solo sé cómo conectarme a una base de datos a la vez, me limito a esto:

mongoose.connect(process.env.CONN_STR);

3, En su colección existente, en este caso, libros, tenemos 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, creé un esquema diferente para la copia de seguridad para poder especificar el nombre de la colección:

    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:que especificamos la colección en BackupBook Schema collection: 'oldbooks' . La idea es replicar el esquema existente en el esquema de respaldo.

5, Obtener y guardar cada entrada en la colección:

 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:cree una colección diferente como copia de seguridad. Consulta cada entrada de la colección y luego guárdala en el esquema de copia de seguridad individualmente. Tenga en cuenta que el esquema de copia de seguridad debe especificar el nombre de la colección.