gpt4 book ai didi

python - 如何在 MongoEngine 的另一个 EmbeddedDocument 中推送一个 EmbeddedDocument?

转载 作者:可可西里 更新时间:2023-11-01 09:47:12 24 4
gpt4 key购买 nike

我的应用程序是一个简单的 TODO 列表,这是我使用 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的开发分支对the $ positional operator有一定的支持,但 MongoDB 仅支持每次更新使用一次位置运算符——也就是说,您不能使用它来更新嵌套在列表中的列表(即使是间接更新,如您的示例所示)。

如果您需要对待办事项列表执行原子更新,您应该重新考虑您的数据模型以允许这样做。

关于python - 如何在 MongoEngine 的另一个 EmbeddedDocument 中推送一个 EmbeddedDocument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6380868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com