在mongoengine中更新嵌入的文档

时间:2013-01-05 09:35:26

标签: 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))

我正在尝试更新Feed中的元素(帖子) 第一个:我得到一个对象Feed

model = Feed.objects(_id="....").first()

继续我要更新模型中的帖子有text =“title”。

我如何用mongoengine做到这一点?感谢

3 个答案:

答案 0 :(得分:2)

我解决了它:)

Feed.objects(_id="...", posts__text="findvalue").update(set__posts__S__value="updatevalue")

答案 1 :(得分:0)

如果我理解这个问题,我认为这样的事情会起作用:

model = Feed.objects(_id="....").first()
for post in model.posts:
    if post.text == "title":
        post.value = "placeholder for real update"
model.save()

答案 2 :(得分:0)

扩展@ hoangvu68的答案。这是另一个示例:https://gist.github.com/pingwping/92219a8a1e9d44e1dd8a

格式为:

Foo

请注意,这可以分为2行

MyModel.objects.find(<model-key> = <model-val>, <embedded-doc-key>__<embedded-doc-lookup-key>=<lookup-key-val>).update(set__<embedded-doc-key>__S__<embedded-doc-lookup-key> = <new-val>)