Мне нужно использовать обычный запрос фильтра в качестве выражения в $cond
условии в совокупности.
Например, использовать это «условие», которое будет использоваться в качестве фильтра
'$and':[{'foo':'xxx'},{'bar':'zzz'}]
как это «условие», эквивалентная форма, которая будет использоваться в агрегации
'$and'[{'$eq':['$foo','xxx']},{'$eq':['$bar':'zzz']}]
Причина этого заключается в том, что у меня хранятся определенные фильтры, и в какой-то момент мне нужно проверить их на некоторых документах, но поскольку существует несколько из них, из соображений производительности, я хочу избежать выполнения нескольких последовательных запросов поиска, поэтому его можно использовать следующим образом:
aggregate([
{
$match: { <match the document> }
},
{
$project: {
0: {$cond: [ <filter0>, true, false]},
1: {$cond: [ <filter1>, true, false]},
2: {$cond: [ <filter2>, true, false]},
....
}
}
])
То, чего я хочу достичь с помощью запроса в $cond
, - это гарантированная согласованность результат с его использованием в $ match или в find ()
Так что мне нужно, по сути, 'inverse $ expr'.