mongodb cursor用法


为了营造大批量数据,我们可以这样写javascript脚本

for (var i=1;i<=10000;i++) { if(i%2==1) { db.cursortest.insert({_id:i,name:'程劲'+i,age:19,major:['泰拳','散打','巴西柔术','和saintding大哥玩SM']}); } else if(i%2==0) { db.cursortest.insert({_id:i,name:'陈培昌'+i,age:21,major:['泰拳','散打','巴西柔术','和saintding大哥一起厮混']}); } }

 显然,这样海量的数据,需要cursor帮助我们完成查询

可以指定只显示前10行

var mycursor = db.cursortest.find({_id:{$lte:10}})

mycursor.next()依次取下一条

当然mongodb为我们封装了forEach函数来循环打印结果注意大小写:

mycursor.forEach(function(obj){printjson(obj)})

效果如下:

还有分页的功能:

var duwa = db.cursortest.find().skip(9990)

duwa.forEach(function(obj){printjson(obj)})

1 var tianwadi = db.cursortest.find().skip(9990).limit(5) 2 tianwadi.forEach(function(obj){printjson(obj)})

跨过前9990行,只显示5条

下面使用游标的toArray()方法,结果卧操~

注意!无论在命令行还是类似studio3T这样的IDE,在每次执行完游标的操作后,游标已经穷尽了数据集,所以要通过再声明一次游标的方法,以确保游标的forEach操作能继续进行。

 

var tianwadi = db.cursortest.find().skip(9990).limit(5) tianwadi.toArray()
输出结果会返回一个列表,如下:
[ { "_id" : 9991, "name" : "程劲9991", "age" : 19, "major" : [ "泰拳", "散打", "巴西柔术", "和丁大哥玩SM" ] }, { "_id" : 9992, "name" : "陈培昌9992", "age" : 21, "major" : [ "泰拳", "散打", "巴西柔术", "和丁大哥一起厮混" ] }, { "_id" : 9993, "name" : "程劲9993", "age" : 19, "major" : [ "泰拳", "散打", "巴西柔术", "和丁大哥玩SM" ] }, { "_id" : 9994, "name" : "陈培昌9994", "age" : 21, "major" : [ "泰拳", "散打", "巴西柔术", "和丁大哥一起厮混" ] }, { "_id" : 9995, "name" : "程劲9995", "age" : 19, "major" : [ "泰拳", "散打", "巴西柔术", "和丁大哥玩SM" ] } ]

 如果只取列表中的第4条操作如下:

var tianwadi = db.cursortest.find().skip(9990).limit(5)

tianwadi.toArray()[4]

返回结果如下;

 

{ "_id" : 9995, "name" : "程劲9995", "age" : 19, "major" : [ "泰拳", "散打", "巴西柔术", "和丁大哥玩SM" ] }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM