MongoEngine:如何将文档追加到ListField

时间:2018-08-06 14:06:10

标签: mongoengine

我正在将mongodb与python配合使用。

还使用MongoEngine与mongodb通信。

现在,我制作了一些具有注释功能的简单纸板系统。

[model.py]

import datetime
from mongoengine import *
from config import DB_NAME


connect(DB_NAME)


class User(Document):
    no = SequenceField()
    userid = StringField(unique=True, required=True)
    userpw = StringField(required=True)
    created_at = DateTimeField(default=datetime.datetime.now())


class Comment(EmbeddedDocument):
    content = StringField(required=True)
    writer = ReferenceField(User, required=True)


class Board(Document):
    no = SequenceField()
    subject = StringField(required=True)
    content = StringField(required=True)
    writer = ReferenceField(User, required=True)
    comments = ListField(EmbeddedDocumentField(Comment))
    created_at = DateTimeField(default=datetime.datetime.now())
    updated_at = DateTimeField(default=datetime.datetime.now())

在这段代码中,如何将新列表追加到Board的{​​{1}}字段中?

搜索一个小时后,一些文档说,

comments会完美工作。

但是它抛出Board.objects(no=_no).update_one(push__comments=['123', '456'])错误。

也许有些语法错误,但是我是MongoEngine的新手。

我该如何解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:1)

[已解决]

comment = Comments(content='test', writer='hide')
board = Board.objects(no=_no).get()
board.comments.append(comment)
board.save()

我解决了这样的问题。

但是,如果有任何解决方案,请对此发表评论。