在 mongoengine 中更新嵌入的文档

hoa*_*u68 7 python mongodb mongoengine

我在 mongoengine 上有一堂课

class Post(EmbeddedDocument):
        uid = StringField(required=True)
        text = StringField(required=True)
        value = StringField()

class Feed(Document):
        label = StringField(required=True)
        feed_url = StringField(required=True)
        posts = ListField(EmbeddedDocumentField(Post))
Run Code Online (Sandbox Code Playgroud)

我正在尝试从某个“父”文档更新 Post EmbeddedDocument 属性名称文本。作为第一步,我检索 Feed 文档

model = Feed.objects(_id="....").first()
Run Code Online (Sandbox Code Playgroud)

然后我想更新嵌入文档“Post”的属性文本。

我怎样才能用 mongoengine 实现它?谢谢

hoa*_*u68 7

我解决了:)

Feed.objects(_id="...", posts__text="findvalue").update(set__posts__S__value="updatevalue")
Run Code Online (Sandbox Code Playgroud)

  • `set__posts__S__value` 中的“S”是什么。您能提供一下您在哪里找到这个的参考吗? (2认同)
  • 对于更新文档,如果您不知道列表中的位置,可以使用 $ 位置运算符。`.update(**{'inc__comments__$__votes': 1})`。但是,这并不能很好地映射到语法,因此您也可以使用大写 S 代替 `.update(inc__comments__S__votes=1)`。http://docs.mongoengine.org/guide/querying.html#querying-lists (2认同)