Якщо ви хочете отримати все нове за останні 5 хвилин, вам доведеться зробити кілька розрахунків, але це не важко ...
Спочатку створіть індекс властивості, з якою ви хочете відповідати (включіть напрямок сортування -1 для спадання та 1 для зростання)
db.things.createIndex({ createdAt: -1 }) // descending order on .createdAt
Потім запитуйте документи, створені за останні 5 хвилин (60 секунд * 5 хвилин) .... тому що javascript .getTime()
повертає мілісекунди, вам потрібно багаторазово використовувати 1000, перш ніж використовувати його як вхід до new Date()
конструктора.
db.things.find({
createdAt: {
$gte: new Date(new Date().getTime()-60*5*1000).toISOString()
}
})
.count()
Пояснення до new Date(new Date().getTime()-60*5*1000).toISOString()
такого:
Спочатку обчислюємо "5 хвилин тому":
new Date().getTime()
дає нам поточний час у мілісекундах
- Ми хочемо відняти від цього 5 хвилин (у мс):
5*60*1000
- Я просто множу на 60
секунди, щоб її легко змінити. Я можу просто змінити , 5
щоб , 120
якщо я хочу 2 години (120 хвилин).
new Date().getTime()-60*5*1000
дає нам 1484383878676
(5 хвилин тому в мс)
Тепер нам потрібно ввести це в new Date()
конструктор, щоб отримати формат рядків ISO, необхідний часовими позначками MongoDB.
{ $gte: new Date(resultFromAbove).toISOString() }
(запит mongodb .find ())
- Оскільки ми не можемо мати змінних, ми робимо це все в один кадр:
new Date(new Date().getTime()-60*5*1000)
- ... потім перетворимо на рядок ISO:
.toISOString()
new Date(new Date().getTime()-60*5*1000).toISOString()
дає нам 2017-01-14T08:53:17.586Z
Звичайно, це трохи легше зі змінними, якщо ви використовуєте нативний драйвер node-mongodb, але це працює в оболонці mongo, що я зазвичай використовую для перевірки речей.