MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Koleksi Salinan Mongo dan Izin Pengguna

Per collection.copyTo() dokumentasi di MongoDB 2.4, pembantu shell ini "menyalin semua dokumen dari koleksi ke koleksi baru menggunakan JavaScript sisi server".

Saya mengharapkan alasan Anda mendapatkan unauthorized kesalahan adalah karena sisi server db.eval() perintah memerlukan izin admin penuh di MongoDB 2.4 (beberapa peran di admin basis data).

Anda sebenarnya dapat melihat sumber untuk helper ini di mongo shell jika Anda memanggil copyTo() tanpa () :

> db.test.copyTo
function ( newName ){
    return this.getDB().eval(
        function( collName , newName ){
            var from = db[collName];
            var to = db[newName];
            to.ensureIndex( { _id : 1 } );
            var count = 0;

            var cursor = from.find();
            while ( cursor.hasNext() ){
                var o = cursor.next();
                count++;
                to.save( o );
            }

            return count;
        } , this.getName() , newName
    );
}

Karena penggunaan db.eval() sisi server , ada beberapa peringatan signifikan di copyTo() penggunaan termasuk peringatan tentang kesetiaan jenis dan masalah penguncian. Saya yakin helper ini hanya dimaksudkan untuk digunakan di lingkungan pengembangan dengan izin yang lebih terbuka, daripada lingkungan produksi.

salinan DIY dari mongo cangkang

Itu bukan pilihan yang sepenuhnya gila :). Berikut adalah satu baris sederhana untuk mongo shell (ganti source dan target koleksi yang sesuai):

db.source.find().forEach( function(d) {db.target.insert(d)});

Jika Anda khawatir tentang bandwidth jaringan, Anda dapat menjalankannya dari mongo shell yang lokal ke server MongoDB Anda.

Salin dengan mongodump / mongorestore

Pendekatan yang lebih baik untuk menyalin koleksi (walaupun tidak langsung dari mongo shell) akan menggunakan mongodump &mongorestore :

$ mongodump -d test -c source 
$ mongorestore -d test -c target dump/test/source.bson                                                                                                                                            



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoimport abaikan nol di depan dalam csv

  2. Menyimpan array (dari 'tag') ke MongoDB menggunakan Mongoose

  3. Gunakan case untuk updateOne daripada findOneAndUpdate di MongoDB

  4. MongoDB menghitung jumlah dokumen baru per menit berdasarkan _id

  5. Paging Cepat dengan MongoDB