首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mongoengine更新mongodb中的多个文档

问使用mongoengine更新mongodb中的多个文档
EN

Stack Overflow用户
提问于 2022-04-05 10:51:04
回答 1查看 85关注 0票数 2

我有一张字典清单

代码语言:javascript
复制
{'data': '[{"url":"https://example1.com/photos-reviews/","score":0.671},{"url":"https://example1.com/concerts-events/concert-organ-performances/2018-2019/","score":0.662},{"url":"https://www.example2.org/support-volunteer/orchestra-league/","score":0.645}]', 'type': 'invalid'}

字段url是唯一的,并且基于字段type (无效或无效),mongodb中的字段hum_proc (默认为null )将分别更改为invalid或valid。

这是我做的

代码语言:javascript
复制
@sources_api.route('pending_val', methods=["GET", "POST"])
def pending_val():
     if request.method=='POST':
         data_rec = request.get_json()
         if 'type' in data_rec:
             data_list= json.loads(data_rec["data"])
             for val in data_list:
                MlData.objects(url=val["url"]).update_one(set__hum_proc=data_rec["type"])

我正在迭代和更新每一项。是否可以在一个步骤中使用聚合管道更有效地更新?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-10 11:36:14

可以使用update()方法对查询匹配的字段执行原子更新:

MlData.objects(<your_query>).update(set__hum_proc=data_rec["type"])

更新:

update_one()方法覆盖或添加由查询匹配的第一个文档,而update()则对多个字段执行更新。

我知道您希望使用等效的url值从请求体更新type s。你几乎可以在一行中做到这一点:

代码语言:javascript
复制
MlData.objects(url__in=[e['url'] for e in data_rec['data']]).update(set__hum_proc=data_rec["type"])

这里有几张便条。

首先,我修改了您的请求json,删除了data键中的多余引号,使其更具可读性:

代码语言:javascript
复制
data_rec = {'data': [{"url": "https://example1.com/photos-reviews/",
                      "score": 0.671},
                     {"url": "https://example1.com/concerts-events/concert-organ-performances/2018-2019/",
                      "score": 0.662},
                     {"url": "https://www.example2.org/support-volunteer/orchestra-league/",
                      "score": 0.645}],
            'type': 'valid'}

其次,我动态地从json创建了url列表,这最终允许我使用in查询操作符在数据库中找到这些确切的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71750489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档