gpt4 book ai didi

python - 在 mongoengine 中更新嵌入式文档列表字段的正确方法是什么?

转载 作者:太空狗 更新时间:2023-10-30 00:18:10 27 4
gpt4 key购买 nike

我正在尝试定义用于对 mongoengine 中的嵌入式文档列表字段执行检查和更新的方法。做我想做的事情的正确方法是什么。代码如下。

class Comment(EmbeddedDocument):
created = DateTimeField()
text = StringField()

class Post(Document):
comments = ListField(EmbeddedDocumentField(Comment))

def check_comment(self, comment):
for existing_comment in self.comments:
if comment.created == existing_comment.created and
comment.text == existing_comment.text:
return True
return False

def add_or_replace_comment(self, comment):
for existing_comment in self.comments:
if comment.created == existing_comment.created:
# how do I replace?

# how do I add?

这甚至是解决此类问题的正确方法吗?

最佳答案

您需要找到现有评论的索引。

然后您可以用新评论覆盖旧评论(其中 i 是索引)例如:

post.comments[i] = new_comment

然后只需执行一个 post.save() 并且 mongoengine 会将其转换为一个 $set 操作。

或者,您可以只编写 $set 例如:

Post.objects(pk=post.pk).update(set__comments__i=comment)

关于python - 在 mongoengine 中更新嵌入式文档列表字段的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7279355/

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