Всем привет.
Есть коллекция messages:
в ней лежат много документов по типу:
_id:5d91fb7da4ed665ef5d691a3
body:"hello from me"
author:5d91facba4ed665ef5d6919c
target:5d91facba4ed665ef5d6222e
created_at:2019-09-30T12:56:29.342+00:00
__v:0
_id:5d91fb7da4ed665ef5d691a4
body:"hello from some user"
author:5d91facba4ed665ef5d6222e
target:5d91facba4ed665ef5d6919c
created_at:2019-09-30T12:56:29.342+00:00
__v:0
Я залогиненый юзер и мой id =
5d91facba4ed665ef5d6919c
. Мне надо выбрать сообщения которые связаны со мной.
я делаю match
{
$or: [
{ target: ObjectId('5d91facba4ed665ef5d6919c') },
{ author: ObjectId('5d91facba4ed665ef5d6919c') }]
}
и получаю все сообщения которыя я писал кому-то или мне писал кто-то.
Вопрос:
Как мне дальше строить пайплайн что-бы выбрать уникальных собеседников, не повторяющихся и с последним сообщением от меня или от собеседника ?
делаю подобный функционал:
uniqUsers = [ ...new Set(messages.map(el => el.author === '5d91facba4ed665ef5d6919c' ? el.target : el.author )) ]
получил допустим уникальные id тех кто со мной переписывался.
дальше не знаю как лучше...