如何使用mongoose对一个100万+的mongodb的表进行遍历操作

 我来答
匿名用户
2016-05-07
展开全部
刚才的没有做过测试,我那自己的项目写了一个完整案例,你看一下对你有没有帮助
//这是我封装后的抽象Model
var Dao = require('./Dao');
//这是我根据抽象的Model查找到实体的Model
var professionDao = Dao('profession');
/**
* 游标函数
* @param _start 游标的起始位置
* @param _limit 游标的分页数量
* @param _callback 游标执行函数
*/
function cursor(_start,_limit,_callback){
//初始化数据定义
var start,limit,flag,len;
//初始化起始位置
start = !_start || _start < 0 ? 0 : _start;
//初始化分页数量
limit = !_limit || _limit < 1 ? 1 : _limit;
//使用Model执行分页查询
professionDao.find().skip(start).limit(limit).exec(function(err,docs){
//缓存长度
len = docs.length;
//如果没有查询到,证明已经查询完毕
if(len === 0){
console.log('遍历结束');
}
//初始化循环结束标记
flag = 0;
//遍历
docs.forEach(function(doc){
//如果有执行函数就执行
if(_callback && toString.call(_callback) === '[object Function]'){
_callback(doc);
}
//如果循环到末尾,则迭代
if(len == ++flag){
cursor(start + docs.length,limit);
}
});
});
}
//执行
cursor(0,10,function(doc){
console.log(doc._id);
});

当然这个是没有经过优化的,如果要优化就要解决变量顺序、默认值等问题,尽量让api简介好用,希望对你有帮助!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式