Я пытаюсь создать запрос MongoDB, где я получаю разговор между двумя пользователями. В основном мой объект разговора выглядит следующим образом:
{
"_id" : ObjectId("123"),
"from" : ObjectId("456"),
"to" : ObjectId("789"),
"content" : "Hi!",
"createdAt" : 1558037545568.0
}
Я хочу рассказать об их разговоре, отсортированном по createdAt
по убыванию, а также объединить их пользовательские объекты. Я знаю, что мне нужно использовать $lookup
для поиска по запросу users
, но у меня есть несколько вопросов:
- Как я могу создать
$lookup
операцию, которая принесет обоим пользователям?
- Как управлять им так, что иногда пользователь
456
является пользователем from
, а иногда to
? То же самое для пользователя 789
. Я не получил это слишком много.
Это текущий запрос, в котором все упорядочено без пользовательских объектов:
db.getCollection('messages').aggregate([{
$match: {
$or: [
{ from: ObjectId("456") },
{ to: ObjectId("789") },
{ from: ObjectId("789") },
{ to: ObjectId("456") }
]
}
}, {
$sort: { createdAt: -1 }
}])
Спасибо всем за помощь!