在本教程中,我们将学习如何在 MongoDB 查询中使用limit()
和skip()
方法。
MongoDB 中的limit()
方法
此方法限制响应特定查询而返回的文档数。
语法:
db.collection_name.find().limit(number_of_documents)
让我们举一个例子来了解如何使用这种方法。可以说,我有一个集合studentdata
,其中包含以下文档:
> db.studentdata.find().pretty()
{
"_id" : ObjectId("59bf63380be1d7770c3982af"),
"student_name" : "Steve",
"student_id" : 2002,
"student_age" : 22
}
{
"_id" : ObjectId("59bf63500be1d7770c3982b0"),
"student_name" : "Carol",
"student_id" : 2003,
"student_age" : 22
}
{
"_id" : ObjectId("59bf63650be1d7770c3982b1"),
"student_name" : "Tim",
"student_id" : 2004,
"student_age" : 23
}
让我们说我想找出所有ID > 2002
的学生的名单,我会用一个判断写一个这样的查询:
要了解在查询文档时如何指定条件,请阅读: MongoDB 查询文档
db.studentdata.find({student_id : {$gt:2002}}).pretty()
使用limit()
方法限制结果中的文档:
让我说我不希望所有符合条件的文档。我只想选择一些文档,然后我可以使用limit()
方法来限制文档的数量。例如,如果我只想输出一个文档,那么我会这样做:
> db.studentdata.find({student_id : {$gt:2002}}).limit(1).pretty()
{
"_id" : ObjectId("59bf63500be1d7770c3982b0"),
"student_name" : "Carol",
"student_id" : 2003,
"student_age" : 22
}
MongoDB skip()
方法
skip()
方法用于在查询结果中跳过给定数量的文档。
要理解skip()
方法的使用,让我们采用上面我们看到的相同示例。在上面的例子中,我们可以看到,通过使用limit(1)
,我们设法只获得一个文档,这是第一个与给定条件匹配的文档。如果您不希望第一个文档符合您的条件,该怎么办?例如,我们有两个文档,其student_id
值大于 2002 但是当我们使用limit(1)
将结果限制为 1 时,我们得到了第一个文档,为了得到符合此条件的第二个文档,我们可以使用skip(1)
,这里将跳过第一份文档。
不使用skip()
:
> db.studentdata.find({student_id : {$gt:2002}}).limit(1).pretty()
{
"_id" : ObjectId("59bf63500be1d7770c3982b0"),
"student_name" : "Carol",
"student_id" : 2003,
"student_age" : 22
}
使用skip
:
> db.studentdata.find({student_id : {$gt:2002}}).limit(1).skip(1).pretty()
{
"_id" : ObjectId("59bf63650be1d7770c3982b1"),
"student_name" : "Tim",
"student_id" : 2004,
"student_age" : 23
}