С учетом документов, таких как
{
_id: 'abcd',
userId: '12345',
activities: [
{ status: 'login', timestamp: '10000001' },
{ status: 'logout', timestamp: '10000002' },
{ status: 'login', timestamp: '10000003' },
{ status: 'logout', timestamp: '10000004' },
]
}
Я пытаюсь создать конвейер, так как будут возвращены все пользователи, чьи последние действия по входу / выходу из системы зарегистрированы между двумя временными метками.Например, если значения двух отметок времени находятся в диапазоне от 10000002
до 10000003
, ожидаемый документ должен иметь значение
{
_id: 'abcd',
userId: '12345',
login: '10000003',
logout: '10000002'
}
. Если значения отметок времени находятся в диапазоне от -1
до 10000001
, ожидаемое значениедокумент должен быть:
{
_id: 'abcd',
userId: '12345',
login: '10000001',
logout: null
}
и т. д.
Я знаю, что это связано с агрегациями, мне нужно $unwind
и т. д., но я не уверен насчет остальныха именно вычисление двух полей из одного массива документов