Quel est le moyen le plus rapide pour copier une collection au sein de la même base de données?
Je veux copier une collection au sein de la même base de données et de lui donner un
autre nom -, en gros, prendre un instantané.
Quelle est la meilleure façon de le faire? Est-il une commande, ou dois-je
copie de chaque dossier, à son tour?
Je suis conscient de la cloneCollection
de commande, mais il semble être pour
la copie vers un autre serveur.
Je suis également conscient de mongoimport
et mongoexport
, mais comme je suis en train de faire via PHP, je préfère ne pas faire appel à la coquille.
Vous devez vous connecter pour publier un commentaire.
Vous avez un peu d'options, mais le plus rapide est:
ou en php:
après que vous avez
où, comme indiqué dans le mongo docs, script.js contient quelque chose comme:
Le plus lent (par un ordre de grandeur ou plus) pour copier une collection sera d'utiliser le php natif pilote - tout simplement parce que le déplacement d'informations autour de. Mais vous pourriez question ci-dessus mongo requête si vous voulez absolument éviter les cli appels à l'aide de la db exécuter fonction.
Il est beaucoup plus rapide que de faire de nombreux insère dans une boucle forEach.
Le plus simple & efficace est d'utiliser copyTo(), de sorte que vous pouvez utiliser:
& si
"target"
n'existe pas, il sera créé-- Update --
Selon CopyTo Documentation, Parce que
copyTo()
utilise eval en interne, les opérations de copie va bloquer toutes les autres opérations sur le mongod instance. Donc, il ne doit pas être utilisé sur la production environnement.-- Update --
Parce que
CopyTo()
utiliseeval()
interne &eval()
est obsolète depuis la version 3.0, afin deCopyTo()
est également déprécié depuis la version 3.0.copyTo()
va bloquer toutes les opérations sur lemongod
instance. À partir de la documentation: > Parce que copyTo() utilise eval en interne, les opérations de copie va bloquer toutes les autres opérations sur le mongod instance.En plus de AD7six 1ère solution, si vous utilisez mongoexport /importation être sûr de votre collection et des types de données mongo de configuration, comme expliqué ici: http://docs.mongodb.org/manual/reference/mongodb-extended-json/
C'est mon implémentation en python (pymongo):
Le moyen le plus rapide est db.collection.copyTo().
Noter qu'il est obsolète depuis la version 3.0.
Vous pouvez utiliser le copyDatabase fonction dans le shell mongo:
http://docs.mongodb.org/manual/tutorial/copy-databases-between-instances/