Примечание: Я видел other question и пытался получить ответы от него без везения.Выберите последние N записей из MongoDB, используя node.js
У меня есть коллекция в MongoDB:
{ _id: 1, category_id: 1, time_added: 1234567890, name: "abc" }
Мне нужно найти последние 10 записей из category_id
равных . Звучит просто?
collection.find({ 'category_id': 10 }, {}, { _id: -1, limit : 10}, function (e, d) {});
Но работает это дает мне первые 10 записей вместо последнего 10. Похоже, водитель имеет приоритет «предел», а не «сортировки» ... Я также пытается с $natural
и сортировки на time_added
. Всякий раз, когда я запускаю тот же запрос из командной строки, я получаю то, что мне нужно. Вот что я набираю в командной строке:
collection.find({ 'category_id': 10 }).sort({_id: -1}).limit(10)
Что я делаю неправильно? Есть ли альтернативный способ сделать это с помощью node.js?
Вы используете [узел-MongoDB-родной] драйвер (https://github.com/mongodb/node-mongodb-native)? Он поддерживает цепочный метод 'sort', позволяющий вам выдать запрос драйверу так же, как и вашу командную строку. –
@RayToal Да. Я использую этот драйвер. Где я могу поместить обратный вызов? В пределе как последний параметр? Что делать, если я удаляю .limit(), могу ли я разместить обратный вызов в любой функции в качестве последнего параметра? Постскриптум Я пробовал, и это сработало. Добавьте это как ответ, чтобы я мог его принять. – Xeos
@Xeos - вы можете добавить ответ и отметить его как ответ. – WiredPrairie