mongodb天生不支持多表关联查询,所有复杂的查询都交给了app来处理,这样为了减少在mongodb的查询就要在app上下功夫了
images = mongo.image.find({'uid':1,'atime':1,'views':1,'rank':1},skip=0,limit=10)
这条语句查询图片的元信息,但是我们还需要创建图片的作者的信息
为了减少与mongodb的交互,我们先把查询出来的作者保存下来
imagelist = []
user_dic = {}
#images是个迭代器,for 迭代完成之后,迭代器指针指空,所以要把元素放在list中保存
for i in images:
if str(i['uid']) in user_dic.keys():
pass
else:
user = mongo.user.find_one({'_id':i['uid']})
if user:
user_dic[str(i['uid'])]=user
imagelist.append(i)
如上,每次查询图片作者的时候,先在dic里面查找,如果没有找到再去数据库中查询,这样将尽量减少了与数据库的交互
提高了查询效率