59 votes

Cloner une collection dans MongoDB

Je veux cloner une collection MongoDB et l'enregistrer sur le même serveur avec un nom différent. Par exemple, en ce moment, j'ai les collections suivantes: demo1.categories, demo1.users et demo2.users.

Je veux avoir un "demo2.categories" qui est identique à "demo1.categories". (Il a juste un nom différent.)

82voto

lhagemann Points 831

Encore une fois, la documentation MongoDB vient à la rescousse

en supposant que la collection s'appelle réellement "demo1.categories":

 db.demo1.categories.find().forEach( function(x){db.demo2.categories.insert(x)} );
 

31voto

AbdelHady Points 576

Le plus simple et efficace est d'utiliser copyTo(), de sorte que vous pouvez utiliser:

db.source.copyTo("target"); 

& si "target" n'existe pas, il sera créé

-- Update --

Selon CopyTo de la Documentation, Car copyTo() utilise eval en interne, les opérations de copie va bloquer toutes les autres opérations sur le mongod instance. Donc il ne devrait pas être utilisé sur l'environnement de production.

30voto

Tutankhamen Points 1240

C'est le moyen le plus rapide de cloner votre collection:

 mongoexport -d db_name -c src_collection | mongoimport -d db_name -c dst_collection --drop
 

il clonera src_collection dans db_name en dst_collection . Ou vous pouvez le faire en deux étapes au niveau bson:

 mongodump -d db_name -c src_collection
mongorestore --drop -d db_name -c dst_collection ./dump/db_name/src_collection.bson
 

2voto

kerwin Points 256

il y a déjà une commande pour cela.

Copiez une seule collection d'un serveur à un autre. http://www.mongodb.org/display/DOCS/cloneCollection+Command

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X