mongodb 查询优化技巧一

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里面查找,如果没有找到再去数据库中查询,这样将尽量减少了与数据库的交互

提高了查询效率

猜你喜欢

转载自zhyq0826.iteye.com/blog/1615888