1

mongoengine を使用してリスト アイテムの _id をターゲットにして、ListField からアイテムを削除しようとしています。ここでアトミック アップデートに関する mongoengine ドキュメントを参照しています。 -アップデート

モデル

class Prospect(db.Document):
  comments          = db.ListField(db.EmbeddedDocumentField('Comment'))

class Comment(db.EmbeddedDocument):
  _id             = db.ObjectIdField(default=bson.ObjectId())
  created_at      = db.DateTimeField(default=datetime.datetime.now, required=True)
  body            = db.StringField(verbose_name="Note", required=True)
  author          = db.StringField(verbose_name="Name", max_length=255, required=True)

Mongo ドキュメントは次のようになります。

...
"comments": [
      {
        "_id": {
            "$oid": "53bebb55c3b5a0db7829c15f"
        },
        "created_at": {
            "$date": "2014-07-09T18:26:58.444Z"
        },
        "body": "Did something\n",
        "author": "Dave Roma"
    },

そして、次のようにコメントを削除しようとしています:

prospect = Prospect.objects(id=request.form['prospect_id']).update_one(pull___id=request.form['comment_id'])

そして、私はmongoengineのinvalidQueryErrorを受け取っています:

InvalidQueryError: Cannot resolve field "_id"
4

1 に答える 1