alexbuki
@alexbuki
программист js

Как получить список всех пользователей за последний час из Mongo db?

Есть БД на mongo.

Схема такая:
let reportSchema = new Schema({
 ssoid: {type: String},
 ts: {type: Date},
 grp: {type: String},
 type: {type: String},
 subtype: {type: String},
 url: {type: String},
 orgid: {type: String},
 formid: {type: String},
 code: {type: String},
 ltpa: {type: String},
 sudirresponse: {type: String},
 ymdh: {type: String}
 });


Пример записей:
{"_id":{"$oid":"5c58af318c5faf0f20775db6"},"ssoid":"650ae77a-ffce-475d-a930-c7e345e0658c","ts":{"$date":{"$numberLong":"1499763594000"}},"grp":"guis_-47","type":"formcontroller","subtype":"send","url":"https://www.mos.ru/pgu/ru/application/guis/-47/#step_1","orgid":"guis","formid":"-47","code":"MPGU","ltpa":"","sudirresponse":"","ymdh":"2017-07-11-09","__v":{"$numberInt":"0"}}

 {"_id":{"$oid":"5c58af318c5faf0f20775db7"},"ssoid":"aeadac26-3e19-438b-8e4a-a1ae754bbe41","ts":{"$date":{"$numberLong":"1499763600000"}},"grp":"guis-47","type":"bill","subtype":"prepare","url":"","orgid":"","formid":"","code":"","ltpa":"","sudirresponse":"","ymdh":"2017-07-11-09","__v":{"$numberInt":"0"}}


Нужно получить список всех ssoid(пользователей) за последний час(поле ts)

Я делаю так, но это совсем не то:
let Report = mongoose.model('Report', reportSchema);



 Report.aggregate([
     { $sort: { ts: 1 } },
    { $group: {_id:'$ssoid', count:{$sum:1}, lastSalesDate: { $last: "$ts" }}},
]).
then(function (res) {
    console.log(res); 
});


Я так понимаю сначала необходимо получить запись с максимальным временем, а потом вычесть из него час и уже фильтр по диапазону
  • Вопрос задан
  • 273 просмотра
Пригласить эксперта
Ответы на вопрос 1
@forspamonly2
"за последний час" - это "больше чем текущее время минус 3600 секунд"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы