MongoEngine:如何将文档附加到 ListField
MongoEngine: How to append document to ListField
我正在使用 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
的 comments
字段?
找了一个小时,有文档说,
Board.objects(no=_no).update_one(push__comments=['123', '456'])
将完美运行。
但它抛出 mongoengine.errors.InvalidQueryError: Querying the embedded document 'Comment' failed, due to an invalid query value
错误。
可能有一些语法错误,但我是 MongoEngine 的新手。
我该如何解决这个问题?
谢谢。
[已解决]
comment = Comments(content='test', writer='hide')
board = Board.objects(no=_no).get()
board.comments.append(comment)
board.save()
我解决了这样的问题。
但是,如果有什么解决办法,请评论。
我正在使用 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
的 comments
字段?
找了一个小时,有文档说,
Board.objects(no=_no).update_one(push__comments=['123', '456'])
将完美运行。
但它抛出 mongoengine.errors.InvalidQueryError: Querying the embedded document 'Comment' failed, due to an invalid query value
错误。
可能有一些语法错误,但我是 MongoEngine 的新手。
我该如何解决这个问题?
谢谢。
[已解决]
comment = Comments(content='test', writer='hide')
board = Board.objects(no=_no).get()
board.comments.append(comment)
board.save()
我解决了这样的问题。
但是,如果有什么解决办法,请评论。