MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongo Copy Collection i uprawnienia użytkownika

Według collection.copyTo() dokumentacji w MongoDB 2.4, ten helper powłoki "kopiuje wszystkie dokumenty z kolekcji do newCollection przy użyciu JavaScript po stronie serwera".

Spodziewam się powodu, dla którego otrzymujesz unauthorized błąd jest spowodowany tym, że po stronie serwera db.eval() polecenie wymaga pełnych uprawnień administratora w MongoDB 2.4 (wiele ról po stronie admin bazy danych).

Możesz zobaczyć źródło tego pomocnika w mongo powłoki, jeśli wywołasz copyTo() bez () :

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

Ze względu na użycie po stronie serwera db.eval() , istnieje kilka istotnych ostrzeżeń na copyTo() użycie, w tym ostrzeżenia dotyczące wierności typów i problemów z blokowaniem. Uważam, że ten pomocnik jest przeznaczony do użytku tylko w środowiskach programistycznych z bardziej otwartymi uprawnieniami, a nie w środowisku produkcyjnym.

Zrób to sam kopia z mongo powłoka

To nie jest całkowicie szalona opcja :). Oto prosty jeden wiersz dla mongo powłoka (zastąp source i target kolekcje odpowiednio):

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

Jeśli martwisz się o przepustowość sieci, możesz uruchomić to z mongo powłoki, która jest lokalna na serwerze MongoDB.

Kopiuj za pomocą mongodump / mongorestore

Lepsze podejście do kopiowania kolekcji (choć nie bezpośrednio z mongo powłoki) byłoby użycie 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. Spring Data:Unikalne pole w dokumencie MongoDB

  2. Wiele $ regex przy użyciu $i w MongoDB

  3. MongoDB:zagregowane pole dodawania projektu z wartością statyczną

  4. Jak projekt DBRef na Spring MongoDB Aggregation?

  5. Brak składni; przed oświadczeniem w mongoexport