MongoDB limit()与skip():限制查询条数

 
当我们在使用 find() 方法查询集合中文档的时侯,会一次性的将所有符合条件的文档全部展示出来,但我们可能并不需要全部的查询结果(比如在做分页处理时),这时该怎么做呢?下面就来介绍一下。

limit() 方法

MongoDB 中要限制查询的记录条数可以使用 limit() 方法,该方法接收一个数字作为参数,用来设置要显示的记录数,如下所示:

db.collection_name.find().limit(number)

【示例】假设在集合“course”中有如下数据:
> db.course.find()
{ "_id" : ObjectId("60331a7eee79704753940391"), "title" : "HTML教程", "author" : "编程帮", "url" : "http://www.biancheng.com/html/index.html" }
{ "_id" : ObjectId("60331a7eee79704753940392"), "title" : "C#教程", "author" : "编程帮", "url" : "http://www.biancheng.com/csharp/index.html" }
{ "_id" : ObjectId("60331a7eee79704753940393"), "title" : "MongoDB教程", "author" : "编程帮", "url" : "http://www.biancheng.com/mongodb/index.html" }
若要查询其中的两条,则可以像下面这样:
> db.course.find({},{"title":1,_id:0}).limit(2)
{ "title" : "HTML教程" }
{ "title" : "C#教程" }

注意:如果没有指定 limit() 方法中的参数,则会显示集合中的所有数据。

skip() 方法

除了 limit() 方法外,MongoDB 中还提供了另一种方法 skip(),它同样也可以接收一个数字类型的参数,用来设置要跳过的文档数。其语法格式如下:

db.collection_name.find().skip(number)

【示例】查询集合中的所有文档,并跳过两条记录:
> db.course.find({},{"title":1,_id:0}).skip(2)
{ "title" : "MongoDB教程" }

注意:skip() 方法的默认参数为 0。

另外,limit() 方法与 skip() 方法可以联合使用来实现类似分页的效果,如下所示:
> db.course.find({},{"title":1,_id:0}).skip(1).limit(2)
{ "title" : "C#教程" }
{ "title" : "MongoDB教程" }