Я настраиваю конвейер агрегации MongoDB, и часть его использует $match, если параметр предоставлен, или пытается сопоставить все $match.
Существует метод self.products(), который возвращает список всех продуктов, которые я хотел бы запросить, если параметр не указан, но я не могу понять, как это либо интегрировать, либо использовать $match с подстановочным знаком для всего.
self.pipeline = [
{
'$lookup':
{
'from': 'timeseries',
'localField': '_id',
'foreignField': '_id',
'as': 'everything'
}
},
{
'$unwind': '$everything'
},
{
'$project': {
'_id': 1,
'header': 1,
'item': 1,
'data': '$everything.data'
}
},
{
'$match': {
'product.real': product if product else self.products()
}
}
]
Решил это с помощью:
{
'$match': {
'product.real': product if product else {'$exists': True}
}
}