Я пытаюсь отфильтровать поле комментариев данных поста из моего DocumentDB
. Вот структура данных
{
_id: <objectidgoeshere>,
author: {
userId: 2,
handleName: "VladimirPutin"
}
postBody: "Lorem ipsum dolor amet",
comments: [
{
commentBody: "Another lorem ipsum",
author: {
user_id: 4,
handleName: "JohnDoe"
}
replies: [
{
replyBody: "Reply lorem ipsum",
author: {
user_id: 1,
handleName: "JaneDoe"
}
}
]
},
{
commentBody: "Another lorem ipsum 2",
author: {
user_id: 3,
handleName: "MarkZucc"
}
replies: [
{
replyBody: "Reply lorem ipsum",
author: {
user_id: 4,
handleName: "JohnDoe"
}
}
]
}
]
}
И предположим, что друг и заблокированные идентификаторы находятся в массиве
blocked_ids = [4, 5]
friend_ids = [2, 3]
Я бы хотел отфильтровать комментарии, чтобы он не возвращал комментарии заблокированных пользователей.
Мой текущий код выглядит следующим образом
query = [
{"$match": {"author.userId": {"$in": friend_ids}}},
{"$project": {
"postBody": 1,
"comments": {
"$filter": {
"input": "$comments",
"as": "comments",
"cond": {"$nin": ["$$comments.author.user_id", blocked_ids]}
}
}
}
]
Каким-то образом этот запрос возвращает сообщения из моего друзья, но поле для комментариев пустое. Мне также нужно отфильтровать внутренний массив replies
. Мне нужно отфильтровать ответы пользователей, которых я заблокировал.