我在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还没有委托给我这个特权。 –