sql >> Databáze >  >> NoSQL >> MongoDB

Jak klonovat databázi Mongodb pomocí Mongoose

Měl jsem problém to udělat, nemám žádné reference.

Nicméně takhle jsem to udělal já.

1, vytvořil jsem další kolekci v rámci stejného

db: mydb
collections: books, oldbooks

2, Protože se umím připojit pouze k jedné databázi najednou, držím se tohoto:

mongoose.connect(process.env.CONN_STR);

3, Na vaší stávající sbírce, v tomto případě knih, máme tento kód:

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, vytvořil jsem pro zálohu jiné schéma, abych mohl určit název kolekce:

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

UPOZORNĚNÍ:že jsme specifikovali kolekci v BackupBook Schema collection: 'oldbooks' . Cílem je replikovat existující schéma na schéma zálohování.

5, Vyzvedněte a uložte každý záznam ve sbírce:

 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:Vytvořte jinou kolekci jako zálohu. Dotazujte se na každou položku kolekce a poté ji uložte do schématu zálohy jednotlivě. Všimněte si, že schéma zálohování musí specifikovat název kolekce.




  1. mongorestore nezachycená výjimka:chyba syntaxe

  2. Převést datum z milisekund na objekt ISODate

  3. Skript prostředí Bash se nepřipojuje k MongoDB, i když je stav aktivní

  4. Jak přimět junit testy používat vložený mongoDB v aplikaci springboot?