Ограничение количества возвращаемых документов при вызове функции find() для коллекции в mongodb

Как следует из моего вопроса, я хотел бы ограничить количество отображаемых документов, когда функция find() вызывается для коллекции следующим образом:

exports.findAll = function(req, res) {
db.collection('temp', function(err, collection) {
        collection.find().toArray(function(err, items) {
            res.send(items);
        });
    });
};

Приведенный выше код отобразит все документы, присутствующие во временной коллекции. Но есть ли способ ограничить количество отображаемых документов до 10? И я хотел бы отправить последние десять документов (под последним я имею в виду те, которые были добавлены в последнее время)

Я был бы очень признателен за любые предложения.

Заранее большое спасибо.


person Spaniard89    schedule 30.12.2012    source источник


Ответы (1)


Метод find() возвращает курсор базы данных. Курсоры базы данных имеют метод limit(n), который возвращает другой курсор базы данных, перебирает первые n документов. Поэтому вам просто нужно заменить 3-ю строку на:

collection.find().limit(10).toArray(function(err, items) {

Обратите внимание, что нет никакой гарантии, что эти 10 документов будут выбраны с каким-либо предсказуемым приоритетом. Обычно это порядок вставки, но это не гарантируется. Поэтому перед limit(n) следует поставить соответствующий вызов .sort(your_sort_criterias).

person Philipp    schedule 30.12.2012
comment
Большое спасибо, приятель. Это было действительно полезно. - person Spaniard89; 30.12.2012
comment
Я был бы очень признателен, если бы вы также могли привести мне пример для .sort(). Заранее большое спасибо. - person Spaniard89; 30.12.2012
comment
@Kishorepandey Документация по sort с примерами здесь . - person JohnnyHK; 30.12.2012