Estou usando o MongoDB com Node.JS. Eu tenho uma coleção que contém uma data e outras linhas. A data é um Date
objeto JavaScript .
Como posso classificar essa coleção por data?
date
coluna: stackoverflow.com/questions/5125521/…
Estou usando o MongoDB com Node.JS. Eu tenho uma coleção que contém uma data e outras linhas. A data é um Date
objeto JavaScript .
Como posso classificar essa coleção por data?
date
coluna: stackoverflow.com/questions/5125521/…
Respostas:
Apenas uma ligeira modificação na resposta @JohnnyHK
collection.find().sort({datefield: -1}, function(err, cursor){...});
Em muitos casos de uso, desejamos que os registros mais recentes sejam retornados (como nas atualizações / inserções mais recentes).
Date
objetos sem uma função não está funcionando para mim no 2.6.3.
collection.find().sort(...).exec(function(err, cursor) {})
Classificar por data não requer nada de especial. Basta classificar pelo campo de data desejado da coleção.
Atualizado para o driver nativo 1.4.28 node.js., você pode classificar em ascensão datefield
usando qualquer uma das seguintes maneiras:
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'
ou 'ascending'
também pode ser usado no lugar do 1
.
Para descendente de, uso 'desc'
, 'descending'
ou -1
no lugar do 1
.
db.getCollection('').find({}).sort({_id:-1})
Isso classificará sua coleção em ordem decrescente com base na data de inserção
As respostas de Sushant Gupta estão um pouco desatualizadas e não funcionam mais.
O seguinte snippet deve ser assim agora:
collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});
toArray
papel.
Isso funcionou para mim:
collection.find({}, {"sort" : [['datefield', 'asc']]}, function (err, docs) { ... });
Usando Node.js, Express.js e Monk
collection.find().sort('date':1).exec(function(err, doc) {});
isso funcionou para mim
referido https://docs.mongodb.org/getting-started/node/query/
se o seu formato de data for o seguinte: 14/02/1989 ----> você pode encontrar alguns problemas
você precisa usar o ISOdate assim:
var start_date = new Date(2012, 07, x, x, x);
-----> o resultado ------> ISODate ("2012-07-14T08: 14: 00.201Z")
agora basta usar a consulta como esta:
collection.find( { query : query ,$orderby :{start_date : -1}} ,function (err, cursor) {...}
é isso aí :)
Com o mangusto, não consegui usar 'toArray' e estava recebendo o erro: TypeError: Collection.find(...).sort(...).toArray is not a function.
A função toArray existe na classe Cursor do driver Native MongoDB NodeJS ( referência ).
A classificação também aceita apenas um parâmetro, portanto você não pode passar sua função dentro dele.
Isso funcionou para mim (como respondido por Emil ):
collection.find().sort('-date').exec(function(error, result) {
// Your code
})