Я использую MongoDB с Node.JS. У меня есть коллекция, содержащая дату и другие строки. Дата - это Date
объект JavaScript .
Как отсортировать эту коллекцию по дате?
date
столбец: stackoverflow.com/questions/5125521/…
Я использую MongoDB с Node.JS. У меня есть коллекция, содержащая дату и другие строки. Дата - это Date
объект JavaScript .
Как отсортировать эту коллекцию по дате?
date
столбец: stackoverflow.com/questions/5125521/…
Ответы:
Просто небольшая модификация ответа @JohnnyHK
collection.find().sort({datefield: -1}, function(err, cursor){...});
Во многих случаях использования мы хотим, чтобы возвращались последние записи (например, для последних обновлений / вставок).
Date
объектов без функции у меня не работает в 2.6.3.
collection.find().sort(...).exec(function(err, cursor) {})
Сортировка по дате ничего особенного не требует. Просто отсортируйте по желаемому полю даты коллекции.
Обновлено для нативного драйвера node.js 1.4.28, вы можете сортировать по возрастанию 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
.
db.getCollection('').find({}).sort({_id:-1})
Это отсортирует вашу коллекцию в порядке убывания в зависимости от даты вставки.
Ответы Сушанта Гупты немного устарели и больше не работают.
Следующий фрагмент должен быть таким:
collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});
toArray
.
Это сработало для меня:
collection.find({}, {"sort" : [['datefield', 'asc']]}, function (err, docs) { ... });
Использование Node.js, Express.js и Monk
collection.find().sort('date':1).exec(function(err, doc) {});
это сработало для меня
указано https://docs.mongodb.org/getting-started/node/query/
если ваш формат даты такой: 14.02.1989 ----> вы можете столкнуться с некоторыми проблемами
вам нужно использовать ISOdate следующим образом:
var start_date = new Date(2012, 07, x, x, x);
-----> результат ------> ISODate ("2012-07-14T08: 14: 00.201Z")
теперь просто используйте такой запрос:
collection.find( { query : query ,$orderby :{start_date : -1}} ,function (err, cursor) {...}
Это оно :)
С mongoose я не смог использовать toArray и получал ошибку: TypeError: Collection.find(...).sort(...).toArray is not a function.
функция toArray существует в классе Cursor из собственного драйвера MongoDB NodeJS ( ссылка ).
Также sort принимает только один параметр, поэтому вы не можете передавать свою функцию внутри него.
Это сработало для меня (как ответил Эмиль ):
collection.find().sort('-date').exec(function(error, result) {
// Your code
})