mongodb 游标

点击量:25

插入10000条数据

// 可以直接使用js的方式来操作

for(var i=1;i<=10000;i++){
    db.bar.insert({_id:i,title:'title'+i});
}

游标是什么

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

var mycourse=db.bar.find();

// 获取是否有下一条记录
mycourse.hasNext()

print(mycourse.next())
printjson(mycourse.next())

while 循环来打印

var mycourse=db.bar.find({_id:{$lte:25}});
while(mycourse.hasNext()){
    printjson(mycourse.next());
}

系统的循环方法 forEach

var mycourse=db.bar.find({_id:{$lte:25}});
mycourse.forEach(function(obj){
    printjson(obj);
})

游标在分页中使用

比如查到10000行,跳过100页,取10行
一般假设每页N行,当前是page页

跳过前(page-1)*N 行,再取N行,mysql 中使用limit offset N 来实现

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

// 这样就实现了分页,和linq几乎一模一样
var mycourse=db.bar.find().skip(9905).limit(10);
mycourse.forEach(function(obj){printjson(obj)});

mycourse.toArray()

// 不要滥用这个方法,因为他会把所有查询行都加载到内存中,只有少量数据时才是用这个,其实意义不大

直接用游标的toArray() 方法打印数据

printjson(mycourse.toArray()[4])

发表评论

电子邮件地址不会被公开。

10 + 19 =