【问题标题】:How to remove a item from a list(ListField) by id in MongoEngine?如何在 MongoEngine 中按 id 从列表(ListField)中删除项目?
【发布时间】:2011-10-21 07:11:43
【问题描述】:

结构:

{title: 'test', comments: [{id:1, title: ''}, {id: 8, title: ''}]}

我需要删除 id=8 项,谢谢。

【问题讨论】:

    标签: mongodb mongoengine


    【解决方案1】:
    【解决方案2】:

    你需要在这里使用 $pull 操作符:

    http://www.mongodb.org/display/DOCS/Updating#Updating-%24pull

    db.collection.update({'title':'test'},{$pull : { 'comments' : { 'id' : 8 }});
    

    【讨论】:

      【解决方案3】:

      这里是拉操作符的一个例子,使用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 函数将为您生成主键。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多