1
假设我们有以下几点。如何使用Mongoclient更新单个文档的嵌入式文档列表字段?
class Post(Document):
uid = StringField(required=True, unique=True)
text = StringField(required=True
comments = EmbeddedDocumentListField(Comment)
class Comment(EmbeddedDocument):
comment_id = StringField(required=True)
comment = StringField(required=True)
datetime = DatetimeField()
所以,我们已经保存了后没有任何评论。每篇文章是唯一。
然后,我有一个评论对象列表。我想为循环做一个来逐一保存它们,或者创建一个评论对象列表并更新一次。
此外,我想检查这些评论对象中的一些是否已在Post.comment列表字段中已有。
我已经试过
for comment in comments:
o_comment = Comment()
o_comment.id = comment.get('id')
o_comment.comment = comment.get('comment')
o_comment.datetime = datetime.now()
Post.objects(uid = 'some_id').update_one(push__comments = o_comment)
所以,这个工作,但它附加的文件没有检查。所以如果我多次运行它,我会得到重复的。
有什么想法?再次感谢。使用update_one(add_to_set__comments = <list_of_comments>)
非常感谢。有效! 。我认为我们现在应该使用** update **而不是** update_one **方法,因为我们正在更新对象列表。我们不会为你的方式做* * for循环 –
使用update_one sinc你更新1篇文章。 – sergiuz