我在mongodb中非常陌生,并且陷入了mongodb的聚合函数功能的某个地方。 如果用户输入一些值,或者用户未输入任何值,我想在聚合函数中添加$ match运算符。
const stages = [
{ $sort : { created_at : -1 } },
{ $lookup: { from: 'registers', localField: 'user_id', foreignField: 'id', as: 'sender'} },
{ $replaceRoot : { newRoot : { $mergeObjects : [ { $arrayElemAt: ['$sender', 0] }, "$$ROOT"] } } },
{ $match:{ phone_number: { $eq : number } } }, /* this match operator should add in aggregate if user enter number field */
{ $lookup: { from: 'users', localField: 'reply_by', foreignField: 'id', as: 'userDetails'} },
{ $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: ['$userDetails', 0] }, "$$ROOT" ] } } },
{ $project: { 'sender': 0, 'userDetails' : 0 } },
{ $facet : { length : [ { $count : "total" }], data : [ { $skip: skip }, {$limit: limit } ] } },
];
我尝试使用stages.unshift和stages.push,但是没有按预期工作, 请帮助我。