Si vous voulez obtenir toutes les nouvelles choses dans les 5 dernières minutes, vous devrez faire quelques calculs, mais ce n'est pas difficile...
Créez d'abord un index sur la propriété sur laquelle vous voulez établir une correspondance (incluez la direction de tri -1 pour descendant et 1 pour ascendant).
db.things.createIndex({ createdAt: -1 }) // descending order on .createdAt
Ensuite, il faut rechercher les documents créés au cours des 5 dernières minutes (60 secondes * 5 minutes)....parce que le javascript est un outil de recherche de documents. .getTime()
renvoie des millisecondes que vous devez multiplier par 1000 avant de l'utiliser comme entrée de la fonction new Date()
constructeur.
db.things.find({
createdAt: {
$gte: new Date(new Date().getTime()-60*5*1000).toISOString()
}
})
.count()
Explication pour new Date(new Date().getTime()-60*5*1000).toISOString()
est le suivant :
Nous calculons d'abord "il y a 5 minutes" :
-
new Date().getTime()
nous donne l'heure actuelle en millisecondes
- Nous voulons soustraire 5 minutes (en ms) de ce chiffre :
5*60*1000
-- Je multiplie juste par 60
secondes pour que ce soit facile à changer. Je peux juste changer 5
a 120
si je veux 2 heures (120 minutes).
-
new Date().getTime()-60*5*1000
nous donne 1484383878676
(Il y a 5 minutes dans ms)
Maintenant, nous devons alimenter cela dans un new Date()
pour obtenir le format de chaîne ISO requis par les horodateurs MongoDB.
-
{ $gte: new Date(resultFromAbove).toISOString() }
(mongodb .find() query)
- Comme nous ne pouvons pas avoir de variables, nous faisons tout en une seule fois :
new Date(new Date().getTime()-60*5*1000)
- ...puis convertir en chaîne ISO :
.toISOString()
-
new Date(new Date().getTime()-60*5*1000).toISOString()
nous donne 2017-01-14T08:53:17.586Z
Bien sûr, c'est un peu plus facile avec des variables si vous utilisez le pilote node-mongodb-native, mais cela fonctionne dans le shell mongo qui est ce que j'utilise habituellement pour vérifier les choses.
1 votes
Il aurait été efficace de mentionner quelle bibliothèque nodejs vous utilisez, mais d'après l'exemple, il semble que ce soit mongoosejs