我有一个使用 MongoEngine 的文档和嵌入式文档
class Sub(EmbeddedDocument):
Id = StringField()
User = StringField()
Value = StringField()
class Main(Document):
Value = StringField
Values = ListField(EmbeddedDocumentField(Sub))
当我将新的嵌入文档添加到 Main 的“值”字段中时,我会为列表生成一个唯一的 id 而不是集合,在 Main 的“值”中可以有多个 Sub,每个来自不同的用户,我试图让 MongoEngine 自动删除列表中的“子”值,基于 ID 和用户。
我试图为 Main 运行一个 select,然后为 Sub 本身运行一个 update_one
Main.objects(id=main_id).update_one(pull__values__id=sub_id)
但这一切似乎返回的是数组内部的索引。我知道我可以简单地拉出 Main,然后通过 Values 找到元素并将其删除,但我试图保持这个原子性,并且在拉取、迭代、更新过程中将某些东西添加到 sub 的机会更少。