Я використовую 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. Спроба сортування об'єктів без функції не працює для мене 2.6.3.
collection.find().sort(...).exec(function(err, cursor) {})
Сортування за датою не вимагає нічого особливого. Просто відсортуйте за потрібним полем дати колекції.
Оновлений для рідного драйвера 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
.
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) {...}
Це воно :)
З мангустом я не зміг використати 'toArray', і я отримав помилку: TypeError: Collection.find(...).sort(...).toArray is not a function.
Функція toArray існує в класі Cursor від драйвера Native MongoDB NodeJS ( посилання ).
Також сортування приймає лише один параметр, тому ви не можете передавати свою функцію всередині нього.
Це працювало для мене (як відповів Еміль ):
collection.find().sort('-date').exec(function(error, result) {
// Your code
})