鉴于这样的文档
{
_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
等方法,但是我不确定其余部分,即如何评估同一文档数组中的两个字段。
$gte
和$lte
只返回集合中的一个文档。 - Yanick Rochon