MongoDB文档查询操作(三)
关于MongoDB中的查询,我们已经连着介绍了两篇文章了,本文我们来介绍另外一个查询概念游标。
本文是MongoDB系列的第七篇文章,了解前面的文章有助于更好的理解本文:
1.Linux上安装MongoDB
2.MongoDB基本操作
3.MongoDB数据类型
4.MongoDB文档更新操作
5.MongoDB文档查询操作(一)
6.MongoDB文档查询操作(二)
基本操作
游标这个概念在很多地方都有,Java中JDBC里的ResultSet,Android中的Cursor等等都是,MongoDB中也有类似的概念。当我们调用find方法时,就可以返回一个游标,如下:
var cursor = db.sang_collect.find();
游标中有hasNext()方法,也有next()方法,这两个方法结合可以用来遍历结果,如下:
while(cursor.hasNext()){print(cursor.next())
}
next()方法可以获取查询到的每一个文档,如下:
{"_id" : ObjectId("59f299579babb96c21ddc9e8"),"x" : 0.0,"y" : 1000.0
}/* 2 */
{"_id" : ObjectId("59f299579babb96c21ddc9e9"),"x" : 1.0,"y" : 999.0
}
如果我只想获取文档中的某一个字段,可以按如下方式:
while(cursor.hasNext()){print(cursor.next().y)
}
cursor也实现了JavaScript中的迭代器接口,所以我们也可以直接调用forEach方法来遍历:
cursor.forEach(function(x){print(x)})
当我们调用find方法获取cursor时,shell并不会立即查询数据库,而是在真正使用数据时才会去加载,这有点类似于数据库框架中的懒加载,shell在每次查询的时候会获取前100条结果或者前4MB数据(两者之间取最小),然后我们调用hasNext和next时shell就不用再去连接数据库了,直接一条一条的返回查询到的数据,这100条或者4MB数据全部被返回之后,shell才会再次发起请求向MongoDB要数据。
limit
limit是cursor中的方法,用来限制返回结果的数量,比如我只想获取查询的前三条结果,方式如下:
var cursor = db.sang_collect.find().limit(3)
skip
skip也是cursor中的方法,用来表示跳过的记录数,比如我想获取第2到第5条记录,如下:
var cursor = db.sang_collect.find().skip(2).limit(4)
跳过前两条(0和1)然后获取后面4条数据,skip和limit结合有点类似于MySQL中的limit,可以用来做分页,不过这种分页方式效率过低。
sort
sort用来实现排序功能,比如按x排序,如下:
var cursor = db.sang_collect.find().sort({x:-1})
1表示升序,-1表示降序。
好了,MongoDB中的查询我们就说到这里,小伙伴们有问题欢迎留言讨论。
参考资料:
1.《MongoDB权威指南第2版》
更多资料请关注公众号:
MongoDB文档查询操作(三)相关推荐
- MongoDB文档查询操作(一)
上篇文章我们主要介绍了MongoDB的修改操作,本文我们来看看查询操作. 本文是MongoDB系列的第五篇文章,了解前面的文章有助于更好的理解本文: 1.Linux上安装MongoDB 2.Mongo ...
- 【Mongo】MongoDB文档查询
系列文章索引: [Mongo]初步认识MongoDB shell [Mongo]MongoDB文档的增删改操作 数据查询 find()方法 方法说明 find()方法没有参数时会匹配集合中的所有内容, ...
- 前端学习(1337):mongoDB文档查询
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/playground', { useUnifie ...
- MongoDB(5)文档 CRUD 操作
MongoDB 入门专栏 http://blog.csdn.net/column/details/19681.html MongoDB 文档 CRUD 操作 查询文档 基本使用 mongodb 查询文 ...
- MongoDB——文档操作(更新文档)
目录 一.更新文档命令的格式 二.更新操作符 三.更新单个文档 3.1.更新单个文档的示例 四.更新多个文档 4.1.更新多个文档的概述 4.2.更新多个文档的示例 五.使用upsert命令 5.1. ...
- Python+Streamlit aggrid+MongoDB GridFS构建低代码文档管理应用(文档查询下载实用篇)
1. Sreamlit aggrid简介 Sreamlit aggrid是Streamlit的Ag-Grid组件的实现,在Python Streamlit框架下,更加灵活的使用表格,包括分组.排序.编 ...
- spring mongodb内嵌文档查询
spring mongodb内嵌文档查询 代码示例 简化写法 spring mongodb内嵌文档查询示例. {"name": "zsParent", &quo ...
- MongoDB内嵌文档查询
MongoDB内嵌文档查询 示例数据结构 [{"name": "lisa", "age": 17,"friends": ...
- mongodb文档操作1
mongodb文档操作1 mongodb文档操作1 插入操作 1. 使用方法insert()分别插入以下文档到集合stu中. 2. 使用方法insertMany()插入以下一组文档到集合stu中. 删 ...
最新文章
- 你真的理解CAP理论吗?
- 跑来跑去:假人与AWS Lambda的第一次接触
- 【SAP业务模式】之ICS(四):组织单元的配置
- 【小马哥】Spring Cloud系列讲座
- java 中的instanceof
- 趋势 | AI技能排行榜:TensorFlow热度飙升,Python最火
- linux目录变成只读,解决Linux文件系统变成只读的方法
- OSChina 周五乱弹 ——发现办公室女同事走光了
- 怎么安装python3.7 setuptools与pip_python3之安装、pip、setuptools
- IEnumerable.Select和SelectMany的区别
- Uber花了21亿元入驻上海自贸区 不叫优步叫雾博
- 电信光猫HG2201T超级管理员模式
- 树莓派( Raspberry Pi )3B+ 能做什么?
- 第五届强网杯全国网络安全挑战赛 题目复现(有题目附件,详解)
- 《Rough set-based feature selection for weakly labeled data》
- 123茶楼,众筹...
- OpenCV4.3 Java 编程入门:离散傅里叶变换
- node-gyp rebuild 报错处理
- Matlab绘图-详细,全面(二维三维等)
- 微信红包封面免费领取,自定义个性化红包封面
热门文章
- java捕获异常和抛出异常_Java捕获多个异常,重新抛出异常
- json.parser性能_Jackson JSON Java Parser API示例教程
- 向下滑动动画android_Android SwipeRefreshLayout – Android向下拉动/向下滑动即可刷新
- 开课吧:OOM常见的解决方案有哪些?
- Web前端开发需要掌握的技能有哪些?
- 想学习C语言,学习路线是什么?
- 上传网站到服务器的tomcat
- linux中对文件的权限设置以及作用
- Android软件盘(EditText)的搜索功能
- 百分点董事长苏萌:大数据落地有五大要素