MongoEngineを使用したドキュメントと埋め込みドキュメントがあります
class Sub(EmbeddedDocument):
Id = StringField()
User = StringField()
Value = StringField()
class Main(Document):
Value = StringField
Values = ListField(EmbeddedDocumentField(Sub))
メインの「値」フィールドに新しい埋め込みドキュメントを追加すると、コレクションではなくリストに一意のIDが生成されます。メインの「値」にはそれぞれ異なるユーザーからの複数のサブが存在する可能性があります。MongoEngineにアトミックに削除させようとしています。 IDとユーザーに基づくリストの「サブ」値。
メインに対してselectを実行し、次にサブ自体に対してupdate_oneを実行しようとしました。
Main.objects(id=main_id).update_one(pull__values__id=sub_id)
しかし、これが返すように見えるのは、配列内のインデックスだけです。Mainをプルし、Valuesを調べて要素を見つけて削除できることはわかっていますが、プル、反復、更新プロセス中にサブに何かが追加される可能性を減らして、このアトミックを維持しようとしています。