Я новичок в mongodb и застрял при использовании функции агрегирования. мой запрос -> Я хочу отфильтровать записи базы данных на основе моего примененного фильтра на панели инструментов. Как я могу добавить значение фильтра с помощью оператора $ match? оно должно применяться при наличии значения фильтра и игнорировать, если оно недоступно.
if (req.body.filterSet !== undefined) {
const filterData = req.body.filterSet[0];
var violation_id = filterData.violation_id;
var start_notice = filterData.start_notice;
var end_notice = filterData.end_notice;
var rc_number = filterData.rc_number;
var circle = filterData.circle;
var start_date = filterData.start_date;
var end_date = filterData.end_date;
var status = filterData.status;
var source = filterData.source;
var sms_status = filterData.sms_status;
var notice_status = filterData.notice_status;
}
Complaint.aggregate([
{ $match : { is_active : { $eq : 1 } } },
{ $match : { id : { $eq : 1103186 } } },
{ $lookup:{ from: 'offences', localField:'offences', foreignField: 'offence_id', as: 'offenceSetail' } },
{ $project: { 'offences.is_active' : 0 } },
{ $replaceRoot : { newRoot : { $mergeObjects : [ { $arrayElemAt: [ "$offenceSetail", 0] }, "$$ROOT"] } } },
{ $project: { 'offenceSetail' : 0 } },
{ $lookup: { from: 'registers', localField: 'user_id', foreignField: 'id', as: 'sender'} },
{ $project: { 'registers.is_active' : 0 } },
{ $replaceRoot : { newRoot : { $mergeObjects : [ { $arrayElemAt: ['$sender', 0] }, "$$ROOT"] } } },
{ $project: { 'sender': 0 } },
{ $facet : { length : [ { $count : "total" }], data : [ { $skip: skip }, {$limit: limit } ] } },
])