我正在用pymongo弄湿我的脚,这似乎是一件容易的事,但我不确定最好的方法。
我有一个Member
个对象的字典,每个对象都有一个字典(键值对数据)。我想浏览我的Member
对象字典,并更新数据库:
Member
对象中的每个字段写入数据库,并Member
对象中的任何其他字段。 这是我最好的镜头,但运行它非常慢,所以我猜这是一个更好的方法。 (也许甚至是单行?)
在此代码中,self.members
是我正在迭代的成员字典,member.structure()
返回该Member
个对象数据的字典。
for m in sorted(self.members.values(), key=lambda val:val.session) : ## for each member
if mcollection.find_one({'id':m.id}) is None: ## if there is no db entry matching the member id
print("\tMember {0} wasn't present in the db. Inserting.".format(m.id))
mcollection.insert(m.structure()) ## insert the full dictionary
else: ## if there is a matching db entry
for (k,v) in m.structure().items(): ## for each entry in the member's dictionary
mcollection.update( {'id':m.id}, {'$set': {k:v}}, upsert=True ) ## set the member's field to its value given in the dictionary