MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment cloner une base de données Mongodb avec Mongoose

J'ai eu du mal à le faire, je n'ai aucune référence.

Cependant, c'est comme ça que j'ai fait de mon côté.

1, j'ai créé une autre collection au sein de la même

db: mydb
collections: books, oldbooks

2, Comme je ne sais me connecter qu'à une seule base de données à la fois, je m'en tiens à ceci :

mongoose.connect(process.env.CONN_STR);

3, Sur votre collection existante, en l'occurrence des livres, nous avons ce code :

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, j'ai créé un schéma différent pour la sauvegarde afin de pouvoir spécifier le nom de la collection :

    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);

AVIS :que nous avons spécifié la collection dans BackupBook Schema collection: 'oldbooks' . L'idée est de répliquer le schéma existant sur le schéma de sauvegarde.

5, Récupérez et enregistrez chaque entrée de la collection :

 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 :créez une collection différente en tant que sauvegarde. Interrogez chaque entrée de la collection, puis enregistrez-la individuellement dans le schéma de sauvegarde. Notez que le schéma de sauvegarde doit spécifier le nom de la collection.