Как сортировать коллекцию по дате в MongoDB?
Я использую MongoDB с узлом.JS. У меня есть коллекция, которая содержит дату и другие строки. Дата является JavaScript
10 ответов
просто небольшая модификация ответа @JohnnyHK
collection.find().sort({datefield: -1}, function(err, cursor){...});
во многих случаях мы хотим, чтобы были возвращены последние записи (например, для последних обновлений / вставок).
сортировка по дате не требует ничего особенного. Просто отсортируйте по нужной дате поля коллекции.
обновлено для узла 1.4.28.JS native driver, вы можете сортировать по возрастанию на datefield
используя любой из следующих способов:
collection.find().sort({datefield: 1}).toArray(function(err, docs) {...});
collection.find().sort('datefield', 1).toArray(function(err, docs) {...});
collection.find().sort([['datefield', 1]]).toArray(function(err, docs) {...});
collection.find({}, {sort: {datefield: 1}}).toArray(function(err, docs) {...});
collection.find({}, {sort: [['datefield', 1]]}).toArray(function(err, docs) {...});
'asc'
или 'ascending'
может также использоваться вместо 1
.
для сортировки по убыванию используйте 'desc'
, 'descending'
или -1
вместо 1
.
ответы Сушанта Гупты немного устарели и больше не работают.
следующий фрагмент должен быть таким:
collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});
это сработало для меня:
collection.find({}, {"sort" : [['datefield', 'asc']]}, function (err, docs) { ... });
Через Узел.Яш, Экспресс.js, и Monk
db.getCollection('').find({}).sort({_id:-1})
это сортирует вашу коллекцию в порядке убывания на основе даты вставки
collection.find().sort('date':1).exec(function(err, doc) {});
это работает для меня
referred https://docs.mongodb.org/getting-started/node/query/
с Мангустом это так же просто, как:
collection.find().sort('-date').exec(function(err, collectionItems) {
// here's your code
})
Дополнительные Площади [ ] кронштейн необходим для сортировать параметр для работы.
collection.find({}, {"sort" : [['datefield', 'asc']]} ).toArray(function(err,docs) {});
Если ваш формат даты такой : 14/02/1989 ----> вы можете найти некоторые проблемы
вам нужно использовать ISOdate следующим образом:
var start_date = new Date(2012, 07, x, x, x);
- - - - - > результат ------>ISODate ("2012-07-14T08:14:00.201 Z")
теперь просто используйте запрос следующим образом:
collection.find( { query : query ,$orderby :{start_date : -1}} ,function (err, cursor) {...}
вот именно :)
с Мангустом я не смог использовать "toArray" и получал ошибку:TypeError: Collection.find(...).sort(...).toArray is not a function.
Функция toArray существует в классе курсора из собственного драйвера MongoDB NodeJS (ссылка).
также сортировка принимает только один параметр, поэтому вы не можете передать свою функцию внутри него.
это сработало для меня (как ответил Эмиль):
collection.find().sort('-date').exec(function(error, result) {
// Your code
})