Проблема в том, что у меня есть массив объектов в каждом документе (поле комментариев) моей коллекции сообщений. У каждого объекта есть свойство commentAuthorId. Вещь, которую я не хочу делать, - это выполнять поиск по каждому объекту в массиве комментариев и вставлять в этот объект информацию об авторе комментария на основе упомянутого ранее "commentAuthorId". Информация о пользователе находится в другой коллекции под названием «Пользователи». Вот то, что я пробовал до сих пор, но это не работает.
{
$unwind: '$comments'
},
{
$lookup: {
from: "Users",
localField: "comments.commentAuthorId",
foreignField: "_id",
as: "commentAuthorDetails",
},
},
{$group: {
_id: "$_id",
comments: {
$push: {
_id: "$comments._id",
authorDetails: "$commentAuthorDetails"
}
}
}
Пример документа - Сообщения:
{
"_id":{
"$oid":"5eb2ed9f4c53d52b8c69f01b"
},
"createdBy":"5e45bf41e2465801801455d9",
"postContent":"dasdsa\n#lazyloadingtest\n ",
"tags":[
"lazyloadingtest"
],
"addedAt":{
"$date":"2020-05-06T17:02:23.138Z"
},
"likes":[
],
"likesCount":0,
"comments":[
{
"content":"afdsfsdf",
"author":"Kacper",
"postId":"5eb2ed9f4c53d52b8c69f01b",
"commentAuthorId":"5e45bf41e2465801801455d9",
"addedAt":{
"$date":"2020-05-06T17:02:25.167Z"
},
"_id":{
"$oid":"5eb2eda14c53d52b8c69f01c"
}
}
]
}
Пример документа - Пользователь:
{
"_id":{
"$oid":"5e45bf41e2465801801455d9"
},
"name":"Kacper",
"email":"kacper@kacper.pl",
"password":"$2b$12$QeCw0AKlRI1kjAJc6eM5hOvxc5gRk/FhuI9vDcGLitsrSkHQZp8ky",
"userPicture":null
}
Ожидается результат агрегирования поиска:
{
"_id":{
"$oid":"5eb2ed9f4c53d52b8c69f01b"
},
"createdBy":"5e45bf41e2465801801455d9",
"postContent":"dasdsa\n#lazyloadingtest\n ",
"tags":[
"lazyloadingtest"
],
"addedAt":{
"$date":"2020-05-06T17:02:23.138Z"
},
"likes":[
],
"likesCount":0,
"comments":[
{
"content":"afdsfsdf",
"author":"Kacper",
"postId":"5eb2ed9f4c53d52b8c69f01b",
"commentAuthorId":"5e45bf41e2465801801455d9",
"addedAt":{
"$date":"2020-05-06T17:02:25.167Z"
},
"_id":{
"$oid":"5eb2eda14c53d52b8c69f01c"
},
"postAuthorInfo": {
"_id":{
"$oid":"5e45bf41e2465801801455d9"
},
"name":"Kacper",
"email":"kacper@kacper.pl",
"password":"$2b$12$QeCw0AKlRI1kjAJc6eM5hOvxc5gRk/FhuI9vDcGLitsrSkHQZp8ky",
"userPicture":null
}
}
]
}
Есть только один комментарий, но я не хочу выполнять этот поиск для каждого следующего комментария в поле "commentAuthorId".