MongoDB基础教程系列--第五篇 MongoDB 映射与限制记录
2017-04-05 19:49
766 查看
返回目录
上一篇提到的 find() 的方法,细心的伙伴会发现查询的结果都是显示了集合中全部的字段,实际应用中,显然是不够用的。那么有没有办法指定特定的字段显示出文档呢?答案是肯定的,MongoDB 中用映射实现这种功能。
格式
范例
查询文档时,只显示文档中的 name。首先查询出 user 集合中的所有文档,然后利用映射,返回文档中 name 字段。
如果不加 "_id":0 会返回什么结果呢
我们发现不设置 "_id":1 结果中也会返回 _id 字段,这是因为在执行
2.1、limit() 方法
limit() 方法接受一个数值类型的参数,其值为想要显示的文档数。
格式
范例
查询文档时,只显示两条文档。首先查询出 user 集合中的所有文档,然后利用 limit() 方法,显示两条记录。
如果不给 limit() 指定参数呢,我们会发现,返回了全部文档。
2.2、skip() 方法
skip() 方法接受一个数值类型的参数,其值为想要跳过的文档数。
格式
范例
查询文档时,只显示第二条文档。首先查询出 user 集合中的所有文档,然后利用 limit(1) 方法,显示一条文档,利用 skip(1) 方法跳过第一条文档。
skip() 方法的默认值是 0 。
业精于勤,荒于嬉;行成于思,毁于随。
如果你觉得这篇文章不错或者对你有所帮助,可以通过右侧【打赏】功能,给予博主一点点鼓励和支持
上一篇提到的 find() 的方法,细心的伙伴会发现查询的结果都是显示了集合中全部的字段,实际应用中,显然是不够用的。那么有没有办法指定特定的字段显示出文档呢?答案是肯定的,MongoDB 中用映射实现这种功能。
1、映射
MongoDB 中限制字段的显示,可以利用 0 或 1 来设置字段列表。1 用于显示字段,0 用于隐藏字段。格式
db.COLLECTION_NAME.find({},{KEY:1})
范例
查询文档时,只显示文档中的 name。首先查询出 user 集合中的所有文档,然后利用映射,返回文档中 name 字段。
> db.user.find() { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2", "age" : 20,"sex":"woman" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3", "age" : 19,"sex":"woman" } >db.user.find({},{"name":1, "_id":0}) { "name" : "liruihuan" } { "name" : "user1" } { "name" : "user2" } { "name" : "user3" } >
如果不加 "_id":0 会返回什么结果呢
> db.user.find({},{"name":1}) { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3" } >
我们发现不设置 "_id":1 结果中也会返回 _id 字段,这是因为在执行
find()方法时,
_id字段是一直显示的。如果不想显示该字段,则可以设置 "_id":0。
2、限制记录
MongoDB 中想要显示或者跳过指定的文档条数,可以利用 limit() 方法和 skip() 方法2.1、limit() 方法
limit() 方法接受一个数值类型的参数,其值为想要显示的文档数。
格式
db.COLLECTION_NAME.find().limit(NUMBER)
范例
查询文档时,只显示两条文档。首先查询出 user 集合中的所有文档,然后利用 limit() 方法,显示两条记录。
> db.user.find() { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2", "age" : 20,"sex":"woman" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3", "age" : 19,"sex":"woman" } >db.user.find().limit(2) { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" } >
如果不给 limit() 指定参数呢,我们会发现,返回了全部文档。
> db.user.find().limit() { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2", "age" : 20,"sex":"woman" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3", "age" : 19,"sex":"woman" }
2.2、skip() 方法
skip() 方法接受一个数值类型的参数,其值为想要跳过的文档数。
格式
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
范例
查询文档时,只显示第二条文档。首先查询出 user 集合中的所有文档,然后利用 limit(1) 方法,显示一条文档,利用 skip(1) 方法跳过第一条文档。
> db.user.find() { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2", "age" : 20,"sex":"woman" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3", "age" : 19,"sex":"woman" } >db.user.find().limit(1).skip(1) { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" } >
skip() 方法的默认值是 0 。
> db.user.find() { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2", "age" : 20,"sex":"woman" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3", "age" : 19,"sex":"woman" } > db.user.find().skip() { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2", "age" : 20,"sex":"woman" } { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3", "age" : 19,"sex":"woman" } >
业精于勤,荒于嬉;行成于思,毁于随。
如果你觉得这篇文章不错或者对你有所帮助,可以通过右侧【打赏】功能,给予博主一点点鼓励和支持
相关文章推荐
- MongoDB基础教程系列--第三篇 MongoDB基本操作(二)
- 【Mongodb教程 第十五课 】MongoDB 限制记录
- MongoDB基础教程系列--第八篇 MongoDB 副本集实现复制功能
- MongoDB基础教程系列--第六篇 MongoDB 索引
- MongoDB基础教程系列--目录结构
- MongoDB基础教程系列--第一篇 进入MongoDB世界
- MongoDB基础教程系列--第七篇 MongoDB 聚合管道
- WPF入门教程系列一——基础 一、 前言 最近在学习WPF,学习WPF首先上的是微软的MSDN,然后再搜索了一下网络有关WPF的学习资料。为了温故而知新把学习过程记录下来,以备后
- MongoDB基础教程系列--第四篇 MongoDB 查询文档
- MongoDB基础教程系列--第九篇 MongoDB 分片
- MongoDB基础教程系列--第六篇 MongoDB 索引
- MongoDB基础教程系列--第二篇 MongoDB基本操作(一)
- MongoDB六(映射,限制和排序记录)
- 2009-02-18读书记录:视频教程phplectures——基础
- Dynamips基础教程系列---与本地网卡桥接
- [转]Ultra Fractal教程系列10——学习基础技巧02——学习使用Switch模式
- ElMAH(ASP.NET错误日志记录与通知)系列文章-基础应用篇
- 微软Expression Blend基础教程系列 - Blend基础-项目与层次
- 【AJAX基础】AJAX系列教程网址
- [转]Ultra Fractal教程系列09——学习基础技巧01——创建另一个分形