MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So klonen Sie eine Mongodb-Datenbank mit Mongoose

Es fiel mir schwer, dies zu tun. Ich habe keine Referenz.

Allerdings habe ich es auf meiner Seite so gemacht.

1, ich habe eine andere Sammlung innerhalb derselben erstellt

db: mydb
collections: books, oldbooks

2, Da ich nur weiß, wie man sich mit jeweils einer Datenbank verbindet, bleibe ich dabei:

mongoose.connect(process.env.CONN_STR);

3, Für Ihre bestehende Sammlung, in diesem Fall Bücher, haben wir diesen 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 habe ich ein anderes Schema für das Backup erstellt, damit ich den Namen der Sammlung angeben kann:

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

HINWEIS:dass wir die Sammlung im BackupBook-Schema collection: 'oldbooks' angegeben haben . Die Idee ist, das vorhandene Schema in das Backup-Schema zu replizieren.

5, Holen und speichern Sie jeden Eintrag in der Sammlung:

 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:Erstellen Sie eine andere Sammlung als Backup. Fragen Sie jeden Eintrag der Sammlung ab und speichern Sie ihn dann einzeln im Backup-Schema. Beachten Sie, dass das Sicherungsschema den Namen der Sammlung angeben muss.