我在网络应用程序中使用 pymongo,并且想要执行以下形式的操作:
doc = collection.find(document)
doc.array1.append('foo')
for(y in doc.array2): <do things with y>
doc.array2 = filter(lambda x: ..., doc.array2)
doc.x = len(doc.array2)
collection.save(doc)
有没有什么简单的方法可以处理处理同一文档的多个请求,并防止一个请求破坏另一个请求的结果/因为它正在编辑过时的版本而变得无效?
查看 mongodb 文档中的部分原子操作 http://www.mongodb.org/display/DOCS/Atomic+Operations
您可能感兴趣的部分是关于更新(如果它仍然是最新的)的部分。
- 获取对象。
- 在本地修改对象。
- 发送一个更新请求,内容为“如果对象仍与其旧值匹配,则将其更新为新值”。
如果操作失败,我们可能会从步骤 1 开始重试。
当您需要执行许多操作并且希望避免持有数据库锁时,可以采用这种方法。他们还在该文档中说明了他们通常如何反对持有锁。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)