В данной статье мы рассмотрим, как ограничить количество документов, получаемых из коллекции.
Метод limit()
Для того, чтобы ограничить количество документов, получаемых в результате выполнения метода find() в MongoDB предусмотрен метод limit().
Данный метод имеет следующий синтаксис:
db.ИМЯ_КОЛЛЕКЦИИ.find().limit(КОЛИЧЕСТВО_ДОКУМЕНТОВ)
Для понимания того, как это работает на практике, рассмотрим простой пример:
Предположим, что у нес есть коллекция developers, которая содержит следующие документы:
> db.developers.find().pretty()
{
"_id" : ObjectId("5815f4e735ee883c37ac8b4d"),
"title" : "Eugene Suleimanov",
"specialty" : "Java",
"skills" : [
"Java",
"Hibernate",
"Spring"
],
"salary" : 3500
}
{
"_id" : ObjectId("5815f4ec35ee883c37ac8b4e"),
"title" : "Ivan Ivanov",
"specialty" : "Java",
"skills" : [
"Java",
"Hibernate",
"Spring"
],
"salary" : 3500
}
{
"_id" : ObjectId("5815f4f535ee883c37ac8b4f"),
"title" : "Nikolay Nikolaev",
"specialty" : "C++",
"skills" : [
"C++",
"STL",
"SQL"
],
"salary" : 3500
}
Для того, ограничить список выводимых документов первыми 2-мя, нам необходимо использовать следующую команду:
> db.developers.find().pretty().limit(2)
{
"_id" : ObjectId("5815f4e735ee883c37ac8b4d"),
"title" : "Eugene Suleimanov",
"specialty" : "Java",
"skills" : [
"Java",
"Hibernate",
"Spring"
],
"salary" : 3500
}
{
"_id" : ObjectId("5815f4ec35ee883c37ac8b4e"),
"title" : "Ivan Ivanov",
"specialty" : "Java",
"skills" : [
"Java",
"Hibernate",
"Spring"
],
"salary" : 3500
}
Если же мы не используем метод limit(), то будут выведены все документы, которые содержатся в указанной коллекции.
Метод skip()
Кроме метода limit(), в MongoDB существует метод skip(), который пропускает (игнорирует) указанное количество документов коллекции.
Данный метод имеет следующий синтаксис:
db.ИМЯ_КОЛЛЕКЦИИ.find().limit(КОЛИЧЕСТВО_ДОУМЕНТОВ).skip(КОЛИЧЕСТВО_ДОКУМЕНТОВ).
Для понимания того, как это работает на практике, рассмотрим простой пример:
Предположим, что у нас есть коллекция developers:
> db.developers.find().pretty()
{
"_id" : ObjectId("5815f4e735ee883c37ac8b4d"),
"title" : "Eugene Suleimanov",
"specialty" : "Java",
"skills" : [
"Java",
"Hibernate",
"Spring"
],
"salary" : 3500
}
{
"_id" : ObjectId("5815f4ec35ee883c37ac8b4e"),
"title" : "Ivan Ivanov",
"specialty" : "Java",
"skills" : [
"Java",
"Hibernate",
"Spring"
],
"salary" : 3500
}
{
"_id" : ObjectId("5815f4f535ee883c37ac8b4f"),
"title" : "Nikolay Nikolaev",
"specialty" : "C++",
"skills" : [
"C++",
"STL",
"SQL"
],
"salary" : 3500
}
Следующая команда ограничит количество получаемых документов первыми 2-мя и проигнорирует первый документ коллекции:
> db.developers.find().pretty().limit(2).skip(1)
{
"_id" : ObjectId("5815f4ec35ee883c37ac8b4e"),
"title" : "Ivan Ivanov",
"specialty" : "Java",
"skills" : [
"Java",
"Hibernate",
"Spring"
],
"salary" : 3500
}
{
"_id" : ObjectId("5815f4f535ee883c37ac8b4f"),
"title" : "Nikolay Nikolaev",
"specialty" : "C++",
"skills" : [
"C++",
"STL",
"SQL"
],
"salary" : 3500
}
На этом мы заканчиваем изучение способов ограничения количества документов, получаемых в результате выполнения запроса find().
В следующей статье мы рассмотрим способ сортировки полученных в результате выполнения запроса find() документов.