【问题标题】:python mongo db aggregate query for taking backup用于备份的python mongodb聚合查询
【发布时间】:2017-09-28 15:19:47
【问题描述】:
在之前的一篇文章中,有人建议使用db[collection].aggregate([{'$match': {}}, {'$out': collection + timestamp}]) 来备份集合。但这是在创建一个临时集合。
我想以 python 格式使用以下查询。
db.collection1.find().forEach(function(d){db.collection2.save(d)})
谢谢,
【问题讨论】:
标签:
python
mongodb
mongodb-query
aggregation-framework
【解决方案1】:
首先我假设您使用的是 PyMongo 库。 Here 是关于集合的 find 函数的文档。
Here 是集合上 insert_one 函数的文档。这是从一个集合中获取所有文档并将它们插入另一个函数的一种方法。
for doc in db.collection1.find({}):
db.collection2.insert_one(doc)
您还可以使用 insert_many 函数以不同的方式执行相同的操作。
db.collection2.insert_many(db.collection1.find({}))
免责声明:我没有完全测试过这些!确保在以任何方式依赖代码之前对其进行测试。
【解决方案2】:
这就是你在 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"