Как отсортировать коллекцию по дате в MongoDB?

Я использую MongoDB с Node.JS. У меня есть коллекция, которая содержит дату и другие строки. Дата - это объект JavaScript Date.

Как я могу сортировать эту коллекцию по дате?

Ответ 1

Просто небольшая модификация ответа @JohnnyHK

collection.find().sort({datefield: -1}, function(err, cursor){...});

Во многих случаях мы хотим, чтобы последние записи были возвращены (например, для последних обновлений/вставок).

Ответ 2

Сортировка по дате не требует ничего особенного. Просто выберите нужное поле даты коллекции.

Обновлен для встроенного драйвера 1.4.28 node.js, вы можете сортировать по возрастанию на 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.

Ответ 3

Ответы Sushant Gupta немного устарели и больше не работают.

Следующий фрагмент должен выглядеть следующим образом:

collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});

Ответ 4

Это сработало для меня:

collection.find({}, {"sort" : [['datefield', 'asc']]}, function (err, docs) { ... });

Используя Node.js, Express.js и Monk

Ответ 6

Дополнительная площадь [] Для работы параметра сортировки требуется скобка.

collection.find({}, {"sort" : [['datefield', 'asc']]} ).toArray(function(err,docs) {});

Ответ 7

С мангуста это просто:

collection.find().sort('-date').exec(function(err, collectionItems) {
  // here your code
})

Ответ 8

db.getCollection('').find({}).sort({_id:-1}) 

Это сортирует вашу коллекцию в порядке убывания в зависимости от даты вставки

Ответ 9

если ваш формат даты выглядит следующим образом: 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) {...}

что он:)