sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan klones en Mongodb-database med Mongoose

Jeg havde svært ved at gøre dette, jeg har ingen reference.

Det var dog sådan, jeg gjorde på min side.

1, oprettede jeg en anden samling inden for samme

db: mydb
collections: books, oldbooks

2, Da jeg kun ved, hvordan man forbinder til én database ad gangen, holder jeg mig til dette:

mongoose.connect(process.env.CONN_STR);

3, På din eksisterende samling, i dette tilfælde bøger, har vi denne kode:

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, oprettede jeg et andet skema til sikkerhedskopien, så jeg kan angive navnet 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);

BEMÆRK:at vi har specificeret samlingen i BackupBook Schema collection: 'oldbooks' . Ideen er at replikere det eksisterende skema til backup-skemaet.

5, Hent og gem hver 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:Opret en anden samling som backup. Forespørg hver post i samlingen og gem derefter i backupskemaet individuelt. Bemærk, backup-skemaet skal angive navnet på samlingen.




  1. MongoDB:Der opstod en timeout efter 30.000 ms valg af en server ved hjælp af CompositeServerSelector

  2. Få returværdien af ​​reactivemongo findAndUpdate-funktionen

  3. Redis benchmarking for hget- og hset-kommandoer

  4. Indlejret dokument vs reference i mongoose-designmodel?