游标操作
来源:互联网 发布:图像识别算法matlab 编辑:程序博客网 时间:2024/06/08 05:56
通俗的说,游标不是查询结果,而是查询的返回资源,或者接口.
通过这个接口,可以逐条读取.
就像php中的fopen打开文件,得到一个资源一样, 通过资源,可以一行一行的读文件.
声明游标:
var cursor = db.collectioName.find(query,projection);
Cursor.hasNext() ,判断游标是否已经取到尽头
Cursor. Next() , 取出游标的下1个单元
用while来循环游标
> var mycursor = db.bar.find({_id:{$lte:5}})
> while(mycursor.hasNext()) {
... printjson(mycursor.next());
... }
例:
// 声明游标
var cursor = db.goods.find();
// 循环游标
for(var doc=true;cursor.hasNext();) { printjson(cursor.next());}
也可以简写:
for(var cursor=db.goods.find(), doc=true;cursor.hasNext();) { printjson(cursor.next());}
游标还有一个迭代函数,允许自定义回调函数来逐个处理每个单元.
cursor.forEach(回调函数);
例:
> var gettitle = function(obj) {print(obj.goods_name)}
> var cursor = db.goods.find();
> cursor.forEach(gettitle);
游标在分页中的应用
比如查到10000行,跳过100页,取10行.
一般地,假设每页N行, 当前是page页
就需要跳过前 (page-1)*N 行, 再取N行, 在mysql中, limit offset,N来实现
在mongo中,用skip(), limit()函数来实现的
如 var mycursor = db.bar.find().skip(9995);
则是查询结果中,跳过前9995行
查询第901页,每页10条
则是 var mytcursor = db.bar.find().skip(9000).limit(10);
通过cursor一次性得到所有数据, 并返回数组.
例:
>var cursor = db.goods.find();
> printjson(cursor.toArray()); //看到所有行
> printjson(cursor.toArray()[2]); //看到第2行
注意: 不要随意使用toArray()
原因: 会把所有的行立即以对象形式组织在内存里.可以在取出少数几行时,用此功能.
通过这个接口,可以逐条读取.
就像php中的fopen打开文件,得到一个资源一样, 通过资源,可以一行一行的读文件.
声明游标:
var cursor = db.collectioName.find(query,projection);
Cursor.hasNext() ,判断游标是否已经取到尽头
Cursor. Next() , 取出游标的下1个单元
用while来循环游标
> var mycursor = db.bar.find({_id:{$lte:5}})
> while(mycursor.hasNext()) {
... printjson(mycursor.next());
... }
例:
// 声明游标
var cursor = db.goods.find();
// 循环游标
for(var doc=true;cursor.hasNext();) { printjson(cursor.next());}
也可以简写:
for(var cursor=db.goods.find(), doc=true;cursor.hasNext();) { printjson(cursor.next());}
游标还有一个迭代函数,允许自定义回调函数来逐个处理每个单元.
cursor.forEach(回调函数);
例:
> var gettitle = function(obj) {print(obj.goods_name)}
> var cursor = db.goods.find();
> cursor.forEach(gettitle);
游标在分页中的应用
比如查到10000行,跳过100页,取10行.
一般地,假设每页N行, 当前是page页
就需要跳过前 (page-1)*N 行, 再取N行, 在mysql中, limit offset,N来实现
在mongo中,用skip(), limit()函数来实现的
如 var mycursor = db.bar.find().skip(9995);
则是查询结果中,跳过前9995行
查询第901页,每页10条
则是 var mytcursor = db.bar.find().skip(9000).limit(10);
通过cursor一次性得到所有数据, 并返回数组.
例:
>var cursor = db.goods.find();
> printjson(cursor.toArray()); //看到所有行
> printjson(cursor.toArray()[2]); //看到第2行
注意: 不要随意使用toArray()
原因: 会把所有的行立即以对象形式组织在内存里.可以在取出少数几行时,用此功能.
0 0
- 游标操作
- 游标操作
- 游标操作
- 游标操作
- 游标操作
- SQL游标操作
- proc的游标操作
- Oracle 游标操作
- 游标操作实例
- Mysql 游标操作-进阶
- 游标操作 作成中
- plsql游标的操作
- 游标变量操作
- Oracle 游标操作
- 游标的基本操作
- 03.游标操作数据库
- mysql游标批量操作
- mysql游标批量操作
- 事件冒泡机制
- UIcolor RGB颜色
- Web前端学习——JS基础二之图片切换
- cell自定义方式一 高度一致时
- Android控件详解之ImageView
- 游标操作
- QBC运算符含义
- samba应用常见问题 和 修改后的smb.conf文件
- centos7下Mairadb忘记密码修改
- Android基础入门教程——1.3 SDK更新不了问题解决
- C#基础加强第一天总结--面向对象1
- Android基础入门教程——1.4 Genymotion模拟器安装
- eclipse常用快捷键
- cell自定义方式二 高度不一致时