千家信息网

游标

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,游标操作 cursor游标是什么\?通俗的说,游标不是查询结果,而是查询的返回资源,或者接口.通过这个接口,你可以逐条读取.就像php中的fopen打开文件,得到一个资源一样, 通过资源,可以一行一行
千家信息网最后更新 2026年10月31日游标

游标操作 cursor

游标是什么\?
通俗的说,游标不是查询结果,而是查询的返回资源,或者接口.
通过这个接口,你可以逐条读取.
就像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());
... }

(注意:调用next()则游标已经到了第二个,所以_id为1的不会输出。没有下一个了则会报错)

例:
// 声明游标
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()
原因: 会把所有的行立即以对象形式组织在内存里.
可以在取出少数几行时,用此功能.

游标 函数 查询 资源 一行 单元 接口 文件 结果 循环 通俗 一次性 内存 功能 原因 对象 形式 数据 数组 简写 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网络科技 A股互联网金融科技公司 美国互联网科技巨头监管 奇酷互联网科技 宜安科技 互联网金融 碳银互联网科技有限公司 伴你行互联网科技有限公司 互联网科技公司有哪些 联恩商钥互联网科技有限公司 青海省互联网新科技 北京华百购互联网科技有限公司 搜狐科技互联网 深圳育鹏互联网科技有限公司招聘 滨湖区互联网智能科技产品有哪些 互联网金融科技元年 中国互联网有什么科技 扫呗互联网科技有限公司 美国五大互联网科技公司市值多少 数字互联网科技有限公司 互联网的科技体现在哪里 科技和互联网公司 北京互联网络科技有限公司 深圳市运趣互联网科技有限公司 互联网科技有哪些公司 伊宁互联网科技做什么的 宁波跨境商互联网科技有限公司 科技互联网经济论坛 科技和互联网行业的特点 互联网科技快速发展优美句子 广州全民伙伴互联网科技有限公司
0