MongoDB-游标查询((cursor)

发布时间:2017-11-26 编辑:小张个人博客 查看次数:4535

MongoDB游标是什么?

通俗的说,游标不是查询结果,而是查询的返回资源,或者接口.

通过这个接口,你可以逐条读取.

就像php中的fopen打开文件,得到一个资源一样, 通过资源,可以一行一行的读文件.

声明游标

var cursor =  db.collectiogoods_name.find(query,projection);

Cursor.hasNext() ,判断游标是否已经取到尽头

Cursor. Next() , 取出游标的下1个单元

查询小于等于10的商品

var mycursor = db.goods.find({goods_id:{$lte:10}});
printjson(mycursor.next());


游标还有一个迭代函数,允许我们自定义回调函数来逐个处理每个单元

cursor.forEach(回调函数);

var gettitle = function(obj) {print(obj.goods_goods_name)}
var cursor = db.goods.find();
cursor.forEach(gettitle);

mognodb游标-forEach

游标在分页中的应用

比如查到30行,跳过前28行,取2行.

在mongo中,用skip(), limit()函数来实现的

var mycursor = db.goods.find().skip(28);
mycursor.forEach(function(obj){printjson(obj)});

则是查询结果中,跳过前28行取剩下行

MongoDB-查询游标使用-skip()

查询第2页,每页10条

var mycursor = db.goods.find({},{goods_id:1,goods_goods_name:1}).skip(25).limit(3);
mycursor.forEach(function(obj){printjson(obj)});

MongoDB-查询游标-limit()

通过cursor一次性得到所有数据, 并返回数组.

例:

var cursor = db.goods.find();
printjson(cursor.toArray());  #看到所有行
printjson(cursor.toArray()[2]);  #看到第2行

注意: 不要随意使用toArray()

原因: 会把所有的行立即以对象形式组织在内存里.

可以在取出少数几行时,用此功能.



出处:小张个人博客

网址:http://blog.023xs.cn/

您的支持是对博主最大的鼓励,感谢您的认真阅读。欢迎转载,但请保留该声明。

顶部

Copyright © 小张个人博客 All Rights Reserved 渝ICP备15006773号-1

联系方式:[email protected] | 本站文章仅供学习和参考

渝公网安备 50024102500267号