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"