Как получить последние N записей в mongodb? - PullRequest
447 голосов
/ 12 декабря 2010

Я не могу найти нигде, это было задокументировано.По умолчанию операция find () будет получать записи с начала.Как я могу получить последние N записей в mongodb?

Редактировать: также я хочу, чтобы возвращаемый результат упорядочивался от менее недавнего к самому последнему, а не наоборот.

Ответы [ 13 ]

0 голосов
/ 26 октября 2018

используйте оператор $ slice для ограничения элементов массива

GeoLocation.find({},{name: 1, geolocation:{$slice: -5}})
    .then((result) => {
      res.json(result);
    })
    .catch((err) => {
      res.status(500).json({ success: false, msg: `Something went wrong. ${err}` });
});

, где геолокация - это массив данных, из которых мы получаем последние 5 записей

0 голосов
/ 20 октября 2018
db.collection.find().hint( { $natural : -1 } ).sort(field: 1/-1).limit(n)

согласно документации mongoDB :

Вы можете указать {$ natural: 1}, чтобы запрос выполнял прямое сканирование коллекции.

Вы также можете указать {$ natural: -1}, чтобы запрос выполнял обратное сканирование коллекции.

0 голосов
/ 24 сентября 2014

Последняя функция должна быть sort, а не limit.

Пример:

db.testcollection.find().limit(3).sort({timestamp:-1}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...