Как сортировать коллекцию по дате в 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
})