使用MongoDB集合中文档的列表字段内的子文档中的Pymongo布尔字段进行更新

编程入门 行业动态 更新时间:2024-10-28 16:23:22
本文介绍了使用MongoDB集合中文档的列表字段内的子文档中的Pymongo布尔字段进行更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 示例数据库

下面是一个示例数据库的集合:

{ { "_id": "fijo_1" "Procesos": [{ "code_a": "1234", "code_b": "5678", "code_c": "9012", "vector_aux": ["01", "02"], "leido": false }, { "code_a": "0000", "code_b": "1111", "code_c": "2222", "vector_aux": ["03", "04"], "leido": false } }] }, { "_id": "fijo_2" "Procesos": [{ "code_a": "3333", "code_b": "4444", "code_c": "5555", "vector_aux": ["01", "02"], "leido": false }, { "code_a": "6666", "code_b": "7777", "code_c": "8888", "vector_aux": ["03", "04"], "leido": false } }] } } 问题

我需要更新或更改托管在数组位置的文档的特定字段的值,该数组位置本身就是dbdd文档的字段。 更具体地说,我需要将&qot;的进程编号2的字段更改为的。为满足几个条件的过滤(&5555&)。

编程语言和库:

我使用Python 3.9和";pymongo";库以及在MongoDB中创建的库。

YuTing解决的问题

以下是我现在可以使用的代码:

filter_aux = {'_id': "ES0031104316853001ED_1389"} updtae_aux = {'$set': {"Procesos.$[element].leido": True}} array_filters_aux= [{'element.codeA': "C1", 'element.codeB': "01", 'element.codeC': "000000000051", 'element.leido': False}] collection.update_one(filter=filter_aux, update=updtae_aux,upsert=True, array_filters= array_filters_aux) 推荐答案

使用$arrayFilters

db.collection.update({ "_id": "fijo_2" }, { $set: { "Procesos.$[element].leido": true } }, { arrayFilters: [ { "element.code_a": "3333", "element.code_b": "4444", "element.code_c": "5555", } ], upsert: true })

mongoplayground

更多推荐

使用MongoDB集合中文档的列表字段内的子文档中的Pymongo布尔字段进行更新

本文发布于:2023-11-22 20:23:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1618886.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:表字   文档   布尔   字段   段内

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!