Я использую агрегированный запрос MongoDB, который содержит этап $project
, содержащий оператор $filter
:
[
'$project' => [
'array' => [
'$filter' => [
'input' => '$array',
'as' => 'array',
'cond' => [
'$in' => [
"value",
'$$array.subarray'
]
]
]
]
]
]
Это отфильтровывает все элементы массива, которые не имеют определенного значения вsubarray.
Хотя это работает так, как задумано, оно также удаляет все остальные поля из совокупного запроса и только передает поле массива на следующий этап.Как я могу указать стадии $project
не удалять другие поля, кроме фильтрации этих элементов массива?
Я прочитал, что исключение одного поля вызывает включение всех других полей, но кроме этого у меня нетВ поле, которое я хочу исключить, я не могу добавить операцию исключения к этому этапу $project
, так как операция $filter
уже действует как операция ввода, и вы не можете смешать их.Есть идеи?