Dans de nombreux cas d'utilisation, nous souhaitons avoir les derniers enregistrements à renvoyer (comme pour les dernières mises à jour / insertions).
Que comptez-vous mettre dans la fonction? Essayer simplement de trier des Dateobjets sans fonction ne fonctionne pas pour moi sur 2.6.3.
Sam Brightman
@SamBrightman Cette fonction n'est qu'un rappel. Quoi que vous vouliez faire avec le résultat de la requête, vous mettez cette logique dans votre rappel. Vous pouvez en savoir plus sur ce que sont les rappels et comment ils fonctionnent pour apprendre la programmation basée sur les événements.
Sushant Gupta
Bien sûr, je sais ce qu'est un rappel. Je n'ai vu que l'exigence de tri dans la question et toutes les réponses donnent des rappels. En même temps, le tri ne fonctionnait pas pour moi, alors j'ai pensé que vous deviez peut-être faire un travail supplémentaire dans la fonction.
Sam Brightman
1
@SamBrightman Oh ok. Pour plus de commodité, vous pouvez être explicite et enchaîner commecollection.find().sort(...).exec(function(err, cursor) {})
Sushant Gupta
5
il dit que sort () ne prend qu'un argument
Jitendra Pancholi
39
Le tri par date ne nécessite rien de spécial. Triez simplement par le champ de date souhaité de la collection.
Mis à jour pour le pilote natif node.js 1.4.28, vous pouvez trier par ordre croissant en datefieldutilisant l'une des méthodes suivantes:
@JohnnyHK Sweet. Je ne me souviens pas du scénario exact, mais l'été dernier, j'essayais de faire fonctionner le genre avec l'extrait de Sushant et cela ne fonctionnait tout simplement pas pour moi. C'est peut-être parce qu'il lui manquait la toArraypièce.
krikara
C'est en fait une mauvaise réponse, cela donne un mauvais résultat dans node.js
Avec mongoose, je n'ai pas pu utiliser 'toArray' et j'ai obtenu l'erreur: TypeError: Collection.find(...).sort(...).toArray is not a function.
La fonction toArray existe sur la classe Cursor du pilote Native MongoDB NodeJS ( référence ).
Sort n'accepte également qu'un seul paramètre, vous ne pouvez donc pas y passer votre fonction.
Cela a fonctionné pour moi (comme l'a répondu Emil ):
collection.find().sort('-date').exec(function(error, result){// Your code})
date
colonne: stackoverflow.com/questions/5125521/…Réponses:
Juste une légère modification de la réponse @JohnnyHK
Dans de nombreux cas d'utilisation, nous souhaitons avoir les derniers enregistrements à renvoyer (comme pour les dernières mises à jour / insertions).
la source
Date
objets sans fonction ne fonctionne pas pour moi sur 2.6.3.collection.find().sort(...).exec(function(err, cursor) {})
Le tri par date ne nécessite rien de spécial. Triez simplement par le champ de date souhaité de la collection.
Mis à jour pour le pilote natif node.js 1.4.28, vous pouvez trier par ordre croissant en
datefield
utilisant l'une des méthodes suivantes:'asc'
ou'ascending'
peut également être utilisé à la place de1
.Pour trier décroissant, l' utilisation
'desc'
,'descending'
ou-1
à la place du1
.la source
Cela triera votre collection par ordre décroissant en fonction de la date d'insertion
la source
Les réponses de Sushant Gupta sont un peu dépassées et ne fonctionnent plus.
L'extrait suivant devrait ressembler à ceci maintenant:
collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});
la source
toArray
pièce.Cela a fonctionné pour moi:
Utilisation de Node.js, Express.js et Monk
la source
cela a fonctionné pour moi
référencé https://docs.mongodb.org/getting-started/node/query/
la source
Avec la mangouste, c'est aussi simple que:
la source
Un support carré [] supplémentaire est nécessaire pour que le paramètre de tri fonctionne.
la source
si votre format de date est comme ceci: 14/02/1989 ----> vous pouvez rencontrer des problèmes
vous devez utiliser ISOdate comme ceci:
-----> le résultat ------> ISODate ("2012-07-14T08: 14: 00.201Z")
maintenant, utilisez simplement la requête comme ceci:
c'est tout :)
la source
Avec mongoose, je n'ai pas pu utiliser 'toArray' et j'ai obtenu l'erreur:
TypeError: Collection.find(...).sort(...).toArray is not a function.
La fonction toArray existe sur la classe Cursor du pilote Native MongoDB NodeJS ( référence ).Sort n'accepte également qu'un seul paramètre, vous ne pouvez donc pas y passer votre fonction.
Cela a fonctionné pour moi (comme l'a répondu Emil ):
la source