Используя структуру агрегации, я хотел бы отфильтровать некоторые элементы внутри массива на основе некоторого условия, связанного с дочерними элементами данного массива
Здесь приведен пример документов
/* 1 */
{
"_id" : 1,
"articles" : [
{
"suppliers" : [
{
"exports" : [
{
"channelId" : 'A'
}
]
}
]
},
{
"suppliers" : [
{
"exports" : []
}
]
}
]
}
/* 2 */
{
"_id" : 2,
"articles" : [
{
"suppliers" : [
{
"exports" : [
{
"channelId" : 'A'
}
]
}
]
}
]
}
/* 3 */
{
"_id" : 3,
"articles" : [
{
"suppliers" : [
{
"exports" : [
{
"channelId" : 'B'
}
]
}
]
}
]
}
Давайтескажем, я хочу отфильтровать все элементы в массиве статей, если 'article.suppliers.exports.channelId' = 'A'.
Вот пример результата
/* 1 */
{
"_id" : 1,
"articles" : [
{
"suppliers" : [
{
"exports" : []
}
]
}
]
}
/* 2 */
{
"_id" : 2,
"articles" : []
}
/* 3 */
{
"_id" : 3,
"articles" : [
{
"suppliers" : [
{
"exports" : [
{
"channelId" : 'B'
}
]
}
]
}
]
}
EDIT
Отличие от в том, что вопрос состоит в том, что здесь мы хотим удалить все дочерние элементы первого массива, если условие проверено внутри последнего массива, в старом вопросе, который мы хотели удалитьпросто элемент в последнем массиве