Python 如何在MongoEngine上的另一个嵌入文档中推送嵌入文档?

Python 如何在MongoEngine上的另一个嵌入文档中推送嵌入文档?,python,orm,mongodb,mongoengine,Python,Orm,Mongodb,Mongoengine,我的应用程序是一个简单的待办事项列表,这是我与MongoEngine的课程 class Task(EmbeddedDocument): content = StringField() slug = StringField() position = IntField() priority = IntField() status = IntField() class List(EmbeddedDocument): name = StringField

我的应用程序是一个简单的待办事项列表,这是我与MongoEngine的课程

class Task(EmbeddedDocument):
    content = StringField()
    slug = StringField()
    position = IntField()
    priority = IntField()
    status = IntField()

class List(EmbeddedDocument):
    name = StringField()
    slug = StringField()
    tasks = ListField(EmbeddedDocumentField(Task))

class User(Document):
    email = StringField()
    twitter = StringField()
    lists = ListField(EmbeddedDocumentField(List))
我使用

list = List()
list.name = request.form['name']
list.slug = slugify(request.form['name'])
User.objects(twitter=session['username']).update_one(push__lists=list)
逻辑是用户有多个列表,每个列表可以有多个任务

现在我想在特定列表中推送一个任务,但我找不到MongoEngine的方法。方法可以是这样的:

User.objects(twitter=session['username']).update_one(push__lists__listname__task=list)

这样做的正确方法是什么?

这在MongoDB或MongoEngine中都是不可能的

MongoEngine的开发分支对有一些支持,但是MongoDB只支持在每次更新时使用一次位置操作符——也就是说,您不能使用它来更新嵌套在列表中的列表(即使是间接的,如您的示例所示)

如果需要对todo列表执行原子更新,则应重新考虑您的数据模型以允许此操作