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



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

1210   10  

10 ответов:

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

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

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

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

обновлено для узла 1.4.28.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.

ответы Сушанта Гупты немного устарели и больше не работают.

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

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
})

Comments

    Ничего не найдено.