sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongo Copy Collection och användarbehörigheter

Enligt collection.copyTo() dokumentation i MongoDB 2.4, denna skalhjälpare "kopierar alla dokument från samling till newCollection med hjälp av JavaScript på serversidan".

Jag förväntar mig anledningen till att du får en obehörig felet beror på att serversidan db.eval( ) kommando kräver fullständiga administratörsbehörigheter i MongoDB 2.4 (flera roller på admin databas).

Du kan faktiskt se källan till denna hjälpreda i mongo skal om du anropar copyTo() utan () :

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

På grund av användningen av db.eval() på serversidan , det finns flera betydande varningarcopyTo() användning inklusive varningar om typtrohet och låsningsproblem. Jag tror att den här hjälparen endast är avsedd att användas i utvecklingsmiljöer med mer öppna behörigheter, snarare än en produktionsmiljö.

Gör-det-själv-kopia från mongo skal

Det är inte ett helt galet alternativ :). Här är en enkel one-liner för mongo skal (ersätt källa och mål samlingar efter behov):

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

Om du är orolig för nätverkets bandbredd kan du köra detta från en mongo skal som är lokalt för din MongoDB-server.

Kopiera med mongodump / mongorestore

Ett bättre sätt att kopiera en samling (men inte direkt från mongo). shell) skulle vara att använda mongodump &mongorestore :

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



  1. Spring Data MongoDB Repository med anpassat samlingsnamn

  2. mongoid uppdateringselement inom array

  3. Hur man använder Liquibase-MongoDb-Spring-boot

  4. Bygga en skalbar process med NiFi, Kafka och HBase på CDP