sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man klona en Mongodb-databas med Mongoose

Jag hade svårt att göra det här, jag har ingen referens.

Men det var så här jag gjorde på min sida.

1 skapade jag en annan samling inom samma

db: mydb
collections: books, oldbooks

2, Eftersom jag bara vet hur man ansluter till en databas åt gången, håller jag mig till detta:

mongoose.connect(process.env.CONN_STR);

3, På din befintliga samling, i det här fallet böcker, har vi denna kod:

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 skapade jag ett annat schema för säkerhetskopieringen så att jag kan specificera namnet på samlingen:

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

NOTERA:att vi angav samlingen i BackupBook Schema collection: 'oldbooks' . Tanken är att replikera det befintliga schemat till backupschemat.

5, Hämta och spara varje post i samlingen:

 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:Skapa en annan samling som backup. Fråga varje post i samlingen och spara sedan i backupschemat individuellt. Observera att säkerhetskopieringsschemat måste ange namnet på samlingen.




  1. Hur NoSQL-databaser fungerar på aggregerade funktioner (AVG, SUM, etc)

  2. Hur man säkerhetskopierar och återställer ClusterControl

  3. MongoDB fulltextsökning med haskell-drivrutin

  4. Hur man konfigurerar redis-cluster när man använder spring-data-redis 1.7.0.M1