如何在mongodb中的聚合函数中基于用户输入动态添加匹配运算符

时间:2019-12-03 08:08:59

标签: node.js mongodb mongoose match aggregate

我在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,但是没有按预期工作, 请帮助我。

0 个答案:

没有答案