可以使用toArray()将游标迭代文档返回到一个数组,然后通过数组下标方式进行访问。
该方法将所有由游标返回的文档装载进内存。
//如下示例,将游标返回的内容传递到数组,然后使用 printjson (documentArray[3])输出其中的元素 repSetTest:PRIMARY> var myCursor = db.user.find({id:{$gt:20}}) repSetTest:PRIMARY> var documentArray = myCursor.toArray(); repSetTest:PRIMARY> printjson (documentArray[3]) { "_id" : ObjectId("580d775edeb57e4d05eec0f2"), "id" : 24, //Author : Leshami "ename" : "usr24" //Blog : http://blog.csdn.net/leshami } //也可以将数组元素输出到某个变量,然后在用printjson(myDocument)输出这个变量,如下 repSetTest:PRIMARY> var myDocument = documentArray[3]; repSetTest:PRIMARY> printjson(myDocument) { "_id" : ObjectId("580d775edeb57e4d05eec0f2"), "id" : 24, "ename" : "usr24" }
六、调整游标迭代次数
//设置迭代显示的次数,如下设置为5 repSetTest:PRIMARY> DBQuery.shellBatchSize = 5 5 repSetTest:PRIMARY> db.user.find() { "_id" : ObjectId("5804d07fd974b32430ea9748"), "id" : 1, "ename" : "usr1" } { "_id" : ObjectId("5804d07fd974b32430ea9749"), "id" : 2, "ename" : "usr2" } { "_id" : ObjectId("5804d07fd974b32430ea974a"), "id" : 3, "ename" : "usr3" } { "_id" : ObjectId("5804d07fd974b32430ea974b"), "id" : 4, "ename" : "usr4" } { "_id" : ObjectId("5804d07fd974b32430ea974c"), "id" : 5, "ename" : "usr5" } Type "it" for more //从上面的查询结果可知,当输出5个文档就提示需要输入it来查看更多 repSetTest:PRIMARY> it { "_id" : ObjectId("5804d07fd974b32430ea974d"), "id" : 6, "ename" : "usr6" } { "_id" : ObjectId("5804d07fd974b32430ea974e"), "id" : 7, "ename" : "usr7" } { "_id" : ObjectId("5804d07fd974b32430ea974f"), "id" : 8, "ename" : "usr8" } { "_id" : ObjectId("5804d07fd974b32430ea9750"), "id" : 9, "ename" : "usr9" } { "_id" : ObjectId("5804d07fd974b32430ea9751"), "id" : 10, "ename" : "usr10" } Type "it" for more
七、查看游标度量信息
可以通过db.serverStatus()查看游标状态相关的信息,这些信息通常包括 从服务器上次启动之后游标超时的数量 自定义游标超时的数量 游标打开后已经pinned的数量 打开游标的总数目 //如下查询本机游标的信息 repSetTest:PRIMARY> db.serverStatus().metrics.cursor { "timedOut" : NumberLong(2), "open" : { "noTimeout" : NumberLong(0), "pinned" : NumberLong(0), "total" : NumberLong(2) } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!