原文: https://beginnersbook.com/2017/09/mongodb-limit-and-skip-method/

在本教程中,我们将学习如何在 MongoDB 查询中使用limit()skip()方法。

MongoDB 中的limit()方法

此方法限制响应特定查询而返回的文档数。

语法:

  1. db.collection_name.find().limit(number_of_documents)

让我们举一个例子来了解如何使用这种方法。可以说,我有一个集合studentdata,其中包含以下文档:

  1. > db.studentdata.find().pretty()
  2. {
  3. "_id" : ObjectId("59bf63380be1d7770c3982af"),
  4. "student_name" : "Steve",
  5. "student_id" : 2002,
  6. "student_age" : 22
  7. }
  8. {
  9. "_id" : ObjectId("59bf63500be1d7770c3982b0"),
  10. "student_name" : "Carol",
  11. "student_id" : 2003,
  12. "student_age" : 22
  13. }
  14. {
  15. "_id" : ObjectId("59bf63650be1d7770c3982b1"),
  16. "student_name" : "Tim",
  17. "student_id" : 2004,
  18. "student_age" : 23
  19. }

让我们说我想找出所有ID > 2002的学生的名单,我会用一个判断写一个这样的查询:

要了解在查询文档时如何指定条件,请阅读: MongoDB 查询文档

  1. db.studentdata.find({student_id : {$gt:2002}}).pretty()

MongoDB - `limit()`和`skip()`方法 - 图1

使用limit()方法限制结果中的文档:

让我说我不希望所有符合条件的文档。我只想选择一些文档,然后我可以使用limit()方法来限制文档的数量。例如,如果我只想输出一个文档,那么我会这样做:

  1. > db.studentdata.find({student_id : {$gt:2002}}).limit(1).pretty()
  2. {
  3. "_id" : ObjectId("59bf63500be1d7770c3982b0"),
  4. "student_name" : "Carol",
  5. "student_id" : 2003,
  6. "student_age" : 22
  7. }

MongoDB skip()方法

skip()方法用于在查询结果中跳过给定数量的文档。

要理解skip()方法的使用,让我们采用上面我们看到的相同示例。在上面的例子中,我们可以看到,通过使用limit(1),我们设法只获得一个文档,这是第一个与给定条件匹配的文档。如果您不希望第一个文档符合您的条件,该怎么办?例如,我们有两个文档,其student_id值大于 2002 但是当我们使用limit(1)将结果限制为 1 时,我们得到了第一个文档,为了得到符合此条件的第二个文档,我们可以使用skip(1),这里将跳过第一份文档。

不使用skip()

  1. > db.studentdata.find({student_id : {$gt:2002}}).limit(1).pretty()
  2. {
  3. "_id" : ObjectId("59bf63500be1d7770c3982b0"),
  4. "student_name" : "Carol",
  5. "student_id" : 2003,
  6. "student_age" : 22
  7. }

使用skip

  1. > db.studentdata.find({student_id : {$gt:2002}}).limit(1).skip(1).pretty()
  2. {
  3. "_id" : ObjectId("59bf63650be1d7770c3982b1"),
  4. "student_name" : "Tim",
  5. "student_id" : 2004,
  6. "student_age" : 23
  7. }