首页 > 解决方案 > 无法弄清楚 mongoengine 上的许多更新

问题描述

此代码返回一个我不明白的错误:

query = Analytic.objects(uid__type="binData")
analytics = []
for analytic in query:
    analytic.sessionId = str(analytic.sessionId)
    analytic.uid = str(analytic.uid)
    analytics.append(analytic)
    if len(analytics) % 10000 == 0:
        print(".")
    if len(analytics) == 100000:
        Analytic.objects.update(analytics, upsert=False)
        analytics = []

TypeError:update() 为参数“upsert”获取了多个值

标签: python-3.xmongodbmongoengine

解决方案


同时更新多个文档,我能够使用文档中用户指南中的原子更新部分使其正常工作。 原子更新

所以你的更新应该看起来有点像

Analytic.objects(query_params='value').update(set__param='value')

或者

query = Analytic.objects(query_params='value')
query.update(set__param='value')

该部分有一个您可能想要查看的修改列表。您仍然可能希望在循环之外进行更新,因为您将多次更新查询。


推荐阅读