У меня есть этот рабочий код агрегации для мангуста
const AccountProduct = await AccountProductModel.aggregate([
{
$match: { userID: userID }
},
{
$addFields: {
taggedProducts: {
$filter: {
input: "$taggedProducts",
cond: {
$and: {
$eq: [ "$$this.isChecked", true ],
$eq: [ "$$this.walletID", walletID]
}
}
}
}
}
}
])
он возвращает необходимые данные, но я хочу иметь условие, если идентификатор кошелька не указан, тогда условие должно выглядеть так
cond: {
$and: {
$eq: [ "$$this.isChecked", true ]
}
}
Как мне это сделать?
Вы можете извлечь условие в переменную перед запросом.
let myCond = [{$eq: [ "$$this.isChecked", true ]}];
if (walletID) myCond.push({$eq: [ "$$this.walletID", walletID]});
потом
cond: {$and: myCond}