我在StackOverflow上發現了一些類似的問題,但沒有解決我在找什麼,所以任何幫助將不勝感激。如何對MongoEngine中的ListField中的EmbeddedDocument進行原子更新?
我的模型:
class BlogPost(EmbeddedDocument):
title = StringField(required=True)
blog_url = StringField(required=True, unique=True)
content = StringField()
turned_into_bitly_link = BooleanField(default=False)
class Person(Document):
name = StringField
blog_posts = ListField(EmbeddedDocumentField(BlogPost), default=list)
對於每個blogpost.blog_url,我查詢Bitly API,看看如果URL已縮短。我需要做的是將我從Bitly獲得的數據與我的數據庫中相應的博客帖子進行匹配。我從Bitly返回的對象包含一個url字段,我需要使用它來匹配和更新數據庫中相應的blogpost。還應該說我一次發送一批blog_urls給Bitly,一個接一個不是一個選項。
給定一組blog_posts和Bitly對象從特定個體所產生的所有: 人= Person.objects.get(name__exact =「BobSmith」)
如何選擇嵌入我的Person對象的具體blog_post由唯一的網址字段?作爲一個權宜之計,我想我可以迭代我的person對象中的blog_posts,並且如果blog_post.url與我的Bitly對象中的URL匹配,那麼我可以更新turns_into_bitly_link字段,但我不確定這是什麼是解決這個問題的最有效的方法。
希望這是有道理的。我很樂意澄清,並且提前感謝您的任何建議。
本
Hmmmm。請閱讀* [MongoDB&Pyhon] [1] *中的第3章,並意識到我應該考慮使用pymongo查詢並自動更新我的db。在我看來,與mongoongine的查詢操作相比,語法更易於閱讀,特別是嵌入式文檔。 [1]:http://shop.oreilly.com/product/0636920021513.do –
我把這個作爲我的答案,但唉,stackoverflow還沒有委託給我這個特權。 –