Методы limit и skip


Метод Limit() в MongoDB

Если вам нужно прочитать заданное количество записей данных в MongoDB, вы можете использовать метод limit() в MongoDB. Если вы хотите пропустить заданное количество документов и прочитать данные, вы можете использовать метод skip().

Метод limit() используется для ограничения количества документов, возвращаемых запросом, а метод skip() используется для пропуска заданного количества документов. Эти два метода часто используются вместе для реализации запросов с постраничной навигацией или пакетной обработки больших наборов данных.

Метод limit()

Метод limit() используется для ограничения количества документов, возвращаемых запросом.

Синтаксис

Базовый синтаксис метода limit() выглядит следующим образом:

db.collection.find().limit(<limit>)
  • <limit>: Количество документов для возврата.

Пример

// Вернуть первые 10 документов
db.myCollection.find().limit(10);

Пример

Данные в коллекции col выглядят следующим образом:

{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "Example", "url" : "http://www.example.com", "tags" : [ "php" ], "likes" : 200 }
{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "Example", "url" : "http://www.example.com", "tags" : [ "java" ], "likes" : 150 }
{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "Example", "url" : "http://www.example.com", "tags" : [ "mongodb" ], "likes" : 100 }

В следующем примере отображаются две записи из документов запроса:

> db.col.find({},{"title":1,_id:0}).limit(2)
{ "title" : "PHP 教程" }
{ "title" : "Java 教程" }
>

Примечание:Если не указать параметр в методе limit(), будут отображены все данные в коллекции.


Метод skip()

Помимо использования метода limit() для чтения заданного количества записей данных, мы также можем использовать метод skip() для пропуска заданного количества записей данных. Метод skip() также принимает числовой параметр, указывающий количество записей, которые нужно пропустить.

Метод skip() используется для пропуска указанного количества документов, что позволяет реализовать пагинацию или пакетные запросы.

Синтаксис

Синтаксис метода skip() выглядит следующим образом:

db.collection.find().skip(<skip>)
  • <skip>: Количество документов, которые нужно пропустить.

Пример

// Пропустить первые 10 документов и вернуть следующие 10 документов
db.myCollection.find().skip(10).limit(10);

Пример

В следующем примере будут отображены только данные второго документа

>db.col.find({},{"title":1,_id:0}).limit(1).skip(1)
{ "title" : "Java 教程" }
>

Постраничный запрос:

Пример

// Первая страница, по 10 документов на страницу
db.myCollection.find().skip(0).limit(10);

// Вторая страница, по 10 документов на страницу
db.myCollection.find().skip(10).limit(10);

// Третья страница, по 10 документов на страницу
db.myCollection.find().skip(20).limit(10);

Примечание:Параметр по умолчанию метода skip() равен 0.

Примечания

  • skip()иlimit()Эти методы обычно используются вместе для реализации постраничных запросов. Однако при использовании их на больших наборах данныхskip()может вызвать проблемы с производительностью, потому что MongoDB необходимо сканировать и пропускать указанное количество документов при выполнении запроса, поэтому рекомендуется использовать их только при необходимостиskip()метод, и старайтесь избегать постоянного использования на больших наборах данных.
  • При комбинированииskip()иlimit(),skip()должно бытьlimit()использовался ранее, чтобы избежать неожиданного поведения.

Используяlimit()иskip()метод, вы можете реализовать пагинацию результатов запроса в MongoDB, повышая гибкость и производительность запросов.

Другие расширения