美文网首页代码改变世界
MongoDB对查找结果的优化

MongoDB对查找结果的优化

作者: 金发萌音 | 来源:发表于2014-12-09 00:57 被阅读798次

调用MongoDB的find()查询之后,返回的是一个游标对象

使用pymongo 的find_one()查询之后,返回的是是个dict 对象

对游标对象的处理可以对结果排序,限制查询结果数量和跳过

python方便的遍历同样适用于cursor对象

for user in db.users.find():
    print user

limit skip 和sort

以下查询将只返回三个先找到的结果

 users = db.users.find().limit(3)

当然如果结果不够3个,那么只会返回相应数量的结果

以下查询会跳过前三个结果

    users = db.users.find().skip()

少于三个的情况下 会返回None

上面这两个函数对应的是sql中的limit x,y

然后是排序

用sort函数

以下查询会用username 的升序来排序

 users db.users.find().sort({'username': 1 }) 

将1 换成 -1 就是降序排序了

对应sql 中的order byorder by desc 语句

需要注意的 上面这三个函数返回的结果都是cursor对象,所以可以级联调用

并且find()函数执行之后并不会真正去查询,只有当全部查询构造完成之后才
会执行查询

关于skip()

与其他函数不同的是skip()是查找到结果之后忽略,如果skip的值过于大,那么会很影响效率

这样的话可以使用编程的方法避免skip()跳过过多值

比如

我要查询所有word文档按上传时间排序的第100 到200个文件

 db.docs.find().sort({'uploadtime':1}).limit(100)

##用户点击翻页,请求第100 到200

 db.docs.find().sort({'uploadtime':1}).limit(100).skip(100)

这种情况下可以这样写

docs =  db.docs.find().sort({'uploadtime':1}).limit(100)

last = list(docs )[-1].get('uploadtime')
docs =  db.docs.find({'uploadtime':{'$gt': last } }).sort({'uploadtime':1}).limit(100)

总之就是想法设法避免跳过大量查询

另外需要注意的是

在web 开发时不要将cursor 对象直接返回, 最好将其用list()工厂函数转换

原因1在于cursor只存在10分钟

其次在于cursor 只能遍历一次 对结果遍历一次将使cursor 失效

相关文章

  • MongoDB对查找结果的优化

    调用MongoDB的find()查询之后,返回的是一个游标对象 使用pymongo 的find_one()查询之后...

  • MySQL优化

    一、SQL语句优化 (1)使用limit对查询结果的记录进行限定 (2)避免select *,将需要查找的字段列出...

  • MySQL优化

    SQL语句优化 (1)使用limit对查询结果的记录进行限定 (2)避免select *,将需要查找的字段列出来 ...

  • MySQL优化、索引、事务

    MySQL优化 (1)使用limit对查询结果的记录进行限定(2)避免select *,将需要查找的字段列出来(3...

  • MongoDB从入门到优化(详细到不行)

    MongoDB从入门到优化

  • 字段过滤

    mongodb隐藏字段 mongodb中所有字段默认都会被查找到,若我们不想让字段被查找到,可以在字段后面加上: ...

  • MongoDB在 AWS Marketplace 中推出即用即付

    MongoDB与 AWS Marketplace 的集成,将助力客户在AWS上更容易查找MongoDB Atlas...

  • findbugs 查找bug优化代码

    最近项目在推广阶段,开发任务几乎没有,所以这段时间对代码进行了bug查找和代码优化。这里介绍两款查找bug和优化代...

  • 子字符串查找(2)——KMP算法

    一、定义 KMP(Knuth-Morris-Pratt)算法,其实是对暴力查找算法的优化。在暴力查找算法中,用于追...

  • 算法(2)KMP算法

    1.0 问题描述 实现KMP算法查找字符串。 2.0 问题分析 “KMP算法”是对字符串查找“简单算法”的优化。 ...

网友评论

    本文标题:MongoDB对查找结果的优化

    本文链接:https://www.haomeiwen.com/subject/redntttx.html