Mongoengine:仅更新嵌入式文档上的指定字段

问题描述

我有以下架构:

class Task(EmbeddedDocument):
    description = StringField()
    is_finished = BooleanField(default=False)

class Plan(DynamicDocument):
    priority = IntField()
    tasks = EmbeddedDocumentListField(Task)

然后我从字典创建一个计划实例(最初我是从http请求的json主体获取字典):

body = {"priority": 1,"tasks": [{"description": "do this","is_finished": true}]}

plan = Plan(**body).save()

然后,我尝试更新任务嵌入式文档的description,同时使其其他字段is_finished保持不变,同时也使计划的priority字段保持不变:

new_body = {"tasks": [{"description": "do that"}]}
plan.update(**new_body)

但是,更新后is_finished的值更改为false(它是认值)。

print(plan.to_json())
# prints {"priority": 1,"tasks": [{"description": "do that","is_finished": false}]}

如何在保持未指定的嵌入字段不变的同时更新文档,就像我对主文档上的priority字段所做的一样?我尝试从嵌入式文档模型中删除认值,但是如果在更新过程中未指定该字段,则将其完全删除

解决方法

这将更新特定字段

package

这里,0 是要更新其描述的嵌入式文档(在列表“任务”中)的序数。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...