您的位置:首页 > 数据库 > Mongodb

MongoDB学习日记(八):find with limit

2015-09-11 10:59 447 查看

前言

MongoDB学习日记(五):CRUD - find 中讲到了 find 的简单使用,但是按照之前的内容的话,find 会查询出所有满足条件的包含所有 field(属性)的结果;那么现在就讲讲怎么获取指定属性,以及分页。这包含两部分内容:

投影

skip & limit

投影

db.user.find(
{ name : "admin" } ,
{ name : 1 , age : 1 , _id : 0 }
)




示例图中也可以看到,MongoDB 的 find( ) 方法支持第二个可选的参数,用来设置检索列表,当你设置
name : 1
时就代表着,name 会被查询显示出来,当你设置
_id : 0
时,_id 就被舍弃了。另外你也注意到了,当我的参数如下时,MongoDB 报错了,也就是说:只有 _id 属性可以设置为 0,其他属性你如果不需要,就不要设置了,MongoDB 会自动舍弃,不过如果只设置了 _id = 0, MongoDB 还是会把除开 _id 外的数据都给你。

/* 错误示例 */
db.user.find(
{ name : "admin" } ,
{ name : 1 , age : 0 , _id : 0 }
)


当然,你也可以结合 find( ) 中讲到的 Embedded Documents 和 Arrays 一起使用,而且 MongoDB 还为 Arrays 提供了一个方法 $slice,还有就是通过 Arrays 的下标是得不到值得,会返回一个空的数组给你

db.user.find(
{ name : "admin" },
{ "address.city" : 1, _id: 0 }
)

db.user.find(
{ name : "admin" },
{ group : { $slice : 1 }, _id: 0 }
)


$slice 的作用就是限制你返回的数组的大小,另外如果想例子的代码那样,他也会返回全部的属性。

这里其实还有一些疑点,我不知道为什么:MongoDB 还提供了一个方法 $,用法是 :
"group.$" : 1
但是我这里一直报错… 如果你明白的话,可以告诉我下。

skip & limit

db.user.find().skip(1).limit(2)




skip 的作用就是跳过几条数据

limit 的作用就是获取几条数据

看图就能明白不用多解释,另外补充一个方法:sort( ) - 排序

db.user.find().sort( { name : 1 } ).skip(1).limit(2)


sort( ) : 1 / -1 作用就是排序,当值为 1 时升序,当值为 -1 时降序

需要注意的是不论 sort( ) 在前还是在后,MongoDB 都会先排序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: