如何解决在$ lookup中使用$ match和正则表达式过滤结果
我有这个聚合管道。 我可以通过排序和分页等其他功能来获取所需的数据。 我使用$ lookup从其他集合中添加了我需要的文档。
[ { '$match': { status: [Object] } },{ '$lookup': { from: 'users',as: 'owner',let: { owner: "$owner" },pipeline: [
{ $match: { $expr: { $eq: ["$$owner","$_id"] } } },{ $unwind: { path:"$subscriptions",preserveNullAndEmptyArrays: false} },{ $match: { "subscriptions.active": true } },{
$lookup: {
from: "plans",localField: "subscriptions.plan_id",foreignField: "_id",as: "subscriptions.plans"
}
},] }},{ '$unwind': { path: '$owner',preserveNullAndEmptyArrays: true } },{ '$sort': { location: 1 } },{ '$skip': 0 },{ '$limit': 20 }
]
但是现在,我需要使用搜索功能过滤这些结果。 我想使用不区分大小写的正则表达式来匹配结果。 如何在$ match中使用正则表达式? 如何在日期范围内将$ gte和$ lte与$ match一起使用?
我尝试使用$ regexMatch之类的
{$match: {$regexMatch: {new RegExp(variableName,'i')}}
但失败了。
在$ lookup上查找计划时,如何在其中使用$ match过滤仅包含来自正则表达式的计划的结果?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。