mongodb-利用游标实现分页


游标不是查询结果,而是查询的返回资源,或者接口,通过这个接口,可以逐条读取数据。

声明游标:

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

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

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


用while来循环游标

> var mycursor =db.news.find()

> while(mycursor.hasNext()) {

... print(mycursor.next());

... }


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

cursor.forEach(回调函数);

例:

> var gettitle = function(obj){print(obj.goods_name)}

> var cursor = db.news.find();

> cursor.forEach(gettitle);


查询第901页,每页10条

则是 varmytcursor = db.bar.find().skip(9000).limit(10);


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

例:

>var cursor = db.goods.find();

> printjson(cursor.toArray());  //看到所有行

> printjson(cursor.toArray()[2]);  //看到第2行

 

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

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

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




你可能感兴趣的:(mongodb)