sql >> データベース >  >> NoSQL >> MongoDB

MongooseでMongodbデータベースのクローンを作成する方法

    これを行うのに苦労しました。参照がありません。

    しかし、これは私が自分の側でした方法です。

    1、同じ中に別のコレクションを作成しました

    db: mydb
    collections: books, oldbooks
    

    2、私は一度に1つのデータベースに接続する方法しか知らないので、これに固執します:

    mongoose.connect(process.env.CONN_STR);
    

    3、既存のコレクション(この場合は本)には、次のコードがあります:

    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、コレクションの名前を指定できるように、バックアップ用に別のスキーマを作成しました:

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

    注意:BackupBookスキーマでコレクションを指定したこと collection: 'oldbooks' 。アイデアは、既存のスキーマをバックアップスキーマに複製することです。

    5、コレクション内の各エントリを取得して保存します:

     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:バックアップとして別のコレクションを作成します。コレクションの各エントリをクエリしてから、バックアップスキーマに個別に保存します。バックアップスキーマでは、コレクションの名前を指定する必要があることに注意してください。




    1. Linux / OS Xでmongodサービスを開始する正しい方法は何ですか?

    2. MongoDBでコレクションに名前を付けるための規則はありますか?

    3. マングース:正規表現でフルネームをクエリ

    4. オブジェクトを配列に入力する