【发布时间】:2016-02-05 21:11:02
【问题描述】:
我有一个如下所示的对话集合:
[
{
"_id": "QzuTQYkGDBkgGnHrZ",
"participants": [
{
"id": "YymyFZ27NKtuLyP2C"
},
{
"id": "d3y7uSA2aKCQfLySw",
"lastVisited": "2016-02-04T02:59:10.056Z",
"lastMessage": "2016-02-04T02:59:10.056Z"
}
]
},
{
"_id": "e4iRefrkqrhnokH7Y",
"participants": [
{
"id": "d3y7uSA2aKCQfLySw",
"lastVisited": "2016-02-04T03:26:33.953Z",
"lastMessage": "2016-02-04T03:26:53.509Z"
},
{
"id": "SRobpwtjBANPe9hXg",
"lastVisited": "2016-02-04T03:26:35.210Z",
"lastMessage": "2016-02-04T03:15:05.779Z"
}
]
},
{
"_id": "twXPHb76MMxQ3MQor",
"participants": [
{
"id": "d3y7uSA2aKCQfLySw"
},
{
"id": "SRobpwtjBANPe9hXg",
"lastMessage": "2016-02-04T03:27:35.281Z",
"lastVisited": "2016-02-04T03:57:51.036Z"
}
]
}
]
每个对话(文档)都可以有一个参与者对象,其属性为id、lastMessage、lastVisited。
有时,根据对话的新鲜程度,其中一些值还不存在(例如lastMessage、lastVisited)。
我要做的是比较每个单独对话(文档)中的每个参与者,看看是否在所有参与者中,最大的 lastMessage 字段值属于登录用户。否则,我假设对话中包含登录用户尚未看到的消息。我想获取用户可能尚未看到的消息数。
在上面的示例中,假设我们以d3y7uSA2aKCQfLySw 登录。我们可以看到他是最后一个发送消息进行对话的人1, 2 但不是3。 d3y7uSA2aKCQfLySw 没有看到的更新对话的返回计数应该是 1。
有人能指出我正确的方向吗?我对如何解决这个问题一无所知。对于这个冗长的问题,我深表歉意。
【问题讨论】: