УЗЕЛ - МОНГО: получая последнюю запись N, но старше, чтобы новее - PullRequest
0 голосов
/ 30 августа 2018

Я хотел бы получить последнюю запись N из коллекции, но заказал от старой к новой. Если я просто сделаю:

.limit(N).sort({_id:-1})

это дает мне последнюю запись N, но упорядочено от самой новой до самой старой. Я не пользуюсь лунным луком, а водителем монго. Спасибо.

Ответы [ 4 ]

0 голосов
/ 30 августа 2018

Изначально у меня было:

db.collection(process.env.MESSAGES_COLLECTION).find(req.queryValues).sort({_id:-1}).limit(req.limit)

Я пробовал:

db.collection(process.env.MESSAGES_COLLECTION).find(req.queryValues).aggregate([
                {$sort: {_id: -1}},
                { $limit: req.limit},
                {$sort: {_id: 1}}])

Но я получил ошибку: Ошибка типа: db.collection (...). Find (...). Aggregate не является функцией

Если я попробую:

db.collection(process.env.MESSAGES_COLLECTION).aggregate([
            {$find: req.queryValues},
            {$sort: {_id: -1}},
            { $limit: req.limit},
            {$sort: {_id: 1}}])

Я получаю пустой массив.

0 голосов
/ 30 августа 2018

Вы можете попробовать это:

db.collection.find().skip(db.collection.count() - N)
0 голосов
/ 30 августа 2018

Это упорядочит результаты DESC по полю _id.

.limit(N).sort('-_id')
0 голосов
/ 30 августа 2018

Вы можете использовать агрегирование - сортировка по убыванию, ограничение, затем сортировка по возрастанию:

db.collection.aggregate([
    { $sort: { _id: -1 } },
    { $limit: N },
    { $sort: { _id: 1 } }
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...