2017-09-28 5 views
1

Dans l'un des messages précédents en utilisant db[collection].aggregate([{'$match': {}}, {'$out': collection + timestamp}]) a été suggéré pour prendre la sauvegarde d'une collection. Mais cela crée une collection temporaire.python mongo db requête globale pour prendre la sauvegarde

Je souhaite utiliser la requête ci-dessous au format python.

db.collection1.find().forEach(function(d){db.collection2.save(d)}) 

Merci,

Répondre

0

Pour commencer je suppose que vous utilisez la bibliothèque PyMongo. Here est la documentation de la fonction de recherche sur une collection.

Here est la documentation pour la fonction insert_one sur une collection. C'est une façon de prendre tous les documents d'une collection et de les insérer dans une autre fonction.

for doc in db.collection1.find({}): 
    db.collection2.insert_one(doc) 

Vous pouvez également utiliser la fonction insert_many pour faire la même chose d'une manière différente.

db.collection2.insert_many(db.collection1.find({})) 

AVIS DE NON-RESPONSABILITÉ: Je n'ai pas testé ces produits! Assurez-vous de le tester avant de vous fier au code de TOUTE façon.

0

Voici comment vous feriez cette copie en python:

from pymongo import MongoClient 

client = MongoClient() 
db = client.yourDBname 

n = 0 
for r in db.sourceCollection.find(): 
    db.targetCollection.insert(r) 
    n += 1 

print "copied",n,"items"