游标操作 cursor
通俗的说,游标不是查询结果,而是查询的返回资源,或者接口.通过这个接口,你可以逐条读取.
就像php中的fopen打开文件,得到一个资源一样, 通过资源,可以一行一行的读文件
声明游标
var cursor = db.sb.find()
sb.next() 取出游标的下一个单元
sb.hasNext() 判断游标是否已经到头 当然到头了就不会在取了因为已经读完了
用while实现以下 因为MongoDB自带js引擎解释器在里面写js代码一点问题都没有
while(sb.hasNext()){
printjson(sb.next())
}
当然我们强大的MongoDB没有那么笨,游标还有一个迭代函数,允许我们自定义回调函数来逐个处理每个单元.
var sb = db.sb.find()
sb.forEach(function(obj){
printjson(obj)
})
游标在分页中的应用 创建点数据进去
for(var i=1;i<1000;i++){
db.sb.insert({_id:i,name:'z'+i})
}
在mysql中我们用limit offset n 来实现分页
在MongoDB中我们用skip limit 来实现
在我们练习的时候默认查看20条数据
db.sb.find().skip(20) 则直接跳过20条数据往后取
假如查询第6页每页有10条数据
db.sb.find().skip(50).limit(10)