O que você pretende colocar na função? Apenas tentar classificar Dateobjetos sem uma função não está funcionando para mim no 2.6.3.
Sam Brightman
@SamBrightman Essa função é apenas um retorno de chamada. Tudo o que você deseja fazer com o resultado da consulta, você coloca essa lógica em seu retorno de chamada. Você pode ler mais sobre o que são retornos de chamada e como eles funcionam para aprender a programação baseada em eventos.
precisa
Claro, eu sei o que é um retorno de chamada. Eu só vi o requisito de classificação na pergunta e todas as respostas fornecem retornos de chamada. Ao mesmo tempo, a classificação não estava funcionando para mim, então pensei que talvez você devesse fazer um trabalho adicional na função.
18715 Sam Sammanman
1
@SamBrightman Oh ok. Por conveniência, você pode ser explícito e encadeado como #collection.find().sort(...).exec(function(err, cursor) {})
Sushant Gupta
5
diz sort () leva apenas 1 argumento
Jitendra Pancholi 18/11
39
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 datefieldusando qualquer uma das seguintes maneiras:
@JohnnyHK Sweet. Não me lembro do cenário exato, mas no verão passado eu estava tentando fazer o tipo funcionar com o trecho de Sushant e isso simplesmente não estava funcionando para mim. Talvez seja porque faltava o toArraypapel.
krikara
Esta é realmente uma resposta errada, dá um resultado errado no node.js #
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})
date
coluna: stackoverflow.com/questions/5125521/…Respostas:
Apenas uma ligeira modificação na resposta @JohnnyHK
Em muitos casos de uso, desejamos que os registros mais recentes sejam retornados (como nas atualizações / inserções mais recentes).
fonte
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:'asc'
ou'ascending'
também pode ser usado no lugar do1
.Para descendente de, uso
'desc'
,'descending'
ou-1
no lugar do1
.fonte
Isso classificará sua coleção em ordem decrescente com base na data de inserção
fonte
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) {});
fonte
toArray
papel.Isso funcionou para mim:
Usando Node.js, Express.js e Monk
fonte
isso funcionou para mim
referido https://docs.mongodb.org/getting-started/node/query/
fonte
Com o mangusto, é tão simples quanto:
fonte
Suporte quadrado [] adicional é necessário para que o parâmetro de classificação funcione.
fonte
se o seu formato de data for o seguinte: 14/02/1989 ----> você pode encontrar alguns problemas
você precisa usar o ISOdate assim:
-----> o resultado ------> ISODate ("2012-07-14T08: 14: 00.201Z")
agora basta usar a consulta como esta:
é isso aí :)
fonte
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 ):
fonte