【发布时间】:2011-10-21 07:11:43
【问题描述】:
结构:
{title: 'test', comments: [{id:1, title: ''}, {id: 8, title: ''}]}
我需要删除 id=8 项,谢谢。
【问题讨论】:
标签: mongodb mongoengine
结构:
{title: 'test', comments: [{id:1, title: ''}, {id: 8, title: ''}]}
我需要删除 id=8 项,谢谢。
【问题讨论】:
标签: mongodb mongoengine
你需要在这里使用 $pull 操作符:
http://www.mongodb.org/display/DOCS/Updating#Updating-%24pull
db.collection.update({'title':'test'},{$pull : { 'comments' : { 'id' : 8 }});
【讨论】:
这里是拉操作符的一个例子,使用flask_mongoengine并假设父对象类称为Blog,而cmets是Blog中的EmbeddedDocuments。
Blog.objects(id=blog_id).update_one(pull__comments___id=comment_id)
注意 cmets id 中的三个下划线。这是因为如果您想要 Comments 上的主键,您需要在模型声明中添加一个,如下所示:
class Comment(db.EmbeddedDocument):
_id = db.ObjectIdField(primary_key=True, default=lambda: ObjectId())
...
lamba 函数将为您生成主键。
【讨论】: