python – pymongo中的快速或批量Upsert
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – pymongo中的快速或批量Upsert,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1511字,纯文字阅读大概需要3分钟。
内容图文
![python – pymongo中的快速或批量Upsert](/upload/InfoBanner/zyjiaocheng/711/e05999ef68874a8a8719690652cabb08.jpg)
如何在pymongo中进行批量upsert?我想更新一堆条目,一次做一个是非常慢的.
几乎完全相同的问题的答案在这里:Bulk update/upsert in MongoDB?
接受的答案实际上没有回答这个问题.它只是提供了一个指向mongo CLI的链接,用于执行导入/导出.
我也愿意向某人解释为什么做大量upsert是不可能/没有最佳做法,但请解释这类问题的首选解决方案是什么.
解决方法:
MongoDB 2.6支持批量操作.这包括批量插入,插入,更新等.这样做的目的是减少/消除执行逐个记录操作的往返延迟(“逐个文档”是正确的)的延迟.
那么,这是如何工作的? Python中的示例,因为这就是我正在从事的工作.
>>> import pymongo
>>> pymongo.version
'2.7rc0'
要使用此功能,我们创建一个“批量”对象,向其中添加文档,然后在其上调用execute,它将立即发送所有更新.注意事项:收集的操作的BSONsize(bsonsizes的总和)不能超过16 MB的文档大小限制.当然,操作次数因此可能会有很大差异,您的里程可能会有所不同.
Bulk upsert操作的Pymongo示例:
import pymongo
conn = pymongo.MongoClient('myserver', 8839)
db = conn['mydbname']
coll = db.myCollection
bulkop = coll.initialize_ordered_bulk_op()
retval = bulkop.find({'field1':1}).upsert().update({'$push':{'vals':1}})
retval = bulkop.find({'field1':1}).upsert().update({'$push':{'vals':2}})
retval = bulkop.find({'field1':1}).upsert().update({'$push':{'vals':3}})
retval = bulkop.execute()
这是必不可少的方法.更多信息,请访问:
http://api.mongodb.org/python/2.7rc1/examples/bulk.html
编辑: – 从3.5版本的python驱动程序,不推荐使用initialize_ordered_bulk_op.请改用bulk_write(). [http://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.collection.Collection.bulk_write]
内容总结
以上是互联网集市为您收集整理的python – pymongo中的快速或批量Upsert全部内容,希望文章能够帮你解决python – pymongo中的快速或批量Upsert所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。