У меня есть документ в MongoDB, и я пытаюсь его раскрутить. Я хочу развернуть документ с полем comments
, а затем раскрутить поле replies
внутри каждого комментария. Мне нужно потом перемотать его назад.
Итак, структура документа выглядит следующим образом:
{
"_id": <some_id>,
"post_body": "test post",
"author_id": <some_user_id>,
"comments": [
{
"comment_body": "comment test",
"comment_author_id": <some_user_id>,
"replies": [
{
"reply_body": "reply test",
"reply_author_id": <some_user_id>
},
... more items
]
},
... more items
]
}
Я также пытаюсь найти в таблице пользователей все данные об авторах, используя сохраненные идентификаторы присоединен.
Вот мой код прямо сейчас:
{
"$match": {"post_id": post_id}
},
{
"$lookup": {
"from": "usersLookup",
"localField": "author_id",
"foreignField": "_id",
"as": "author_data"
}
},
{
"$unwind": {
"path": "$comments",
"preserveNullAndEmptyArrays": True
}
},
{
"$lookup": {
"from": "usersLookup",
"localField": "comments.comment_author_id",
"foreignField": "_id",
"as": "comment_author_data"
}
},
{
"$unwind": {
"path": "$comments.replies",
"preserveNullAndEmptyArrays": True
}
},
{
"$lookup": {
"from": "usersLookup",
"localField": "comments.replies.reply_author_id",
"foreignField": "_id",
"as": "reply_author_data"
}
},
{
"$group": {
"_id": '$_id',
"post_body": {"$first": "$post_body"},
"author": {"$first": "$authorData"},
"comments": {
"$push": {
"comment_body": "$comments.comment_body",
"comment_author_data": "$comment_author_data",
"replies": {
"$push": {
"reply_body": "$comments.replies.reply_body",
"reply_author_data": "$reply_author_data"
}
}
}
}
}
}
И я получаю эту ошибку
pymon go .errors.OperationFailure: Проект агрегации оператор не поддерживается: '$ pu sh'
Я хочу получить:
{
"_id": <some_id>,
"post_body": "test post",
"author_data": {"author_name": "test1"},
"comments": [
{
"comment_body": "comment test",
"comment_author_data": {"author_name": "test1"},
"replies": [
{
"reply_body": "reply test",
"reply_author_data": {"author_name": "test1"}
},
... more items
]
},
... more items
]
}
Что мне нужно изменить в моем запросе MongoDB?