未识别的表达式‘ $ REGEX’
无法获得所需的输出。收到“无法识别的表达式 '$regex'” 错误
[
{
'$lookup': {
'from': 'profiles',
'let': {
'userId': '$userId',
},
'pipeline': [
{
'$match': {
$expr: {
$and: [
{ '$eq': ['$uniqueId', '$$mcontactId'] },
{
$or: [{ 'birthDate': { '$regex': '$$today' } },
{ 'spouseBirthdate': { '$regex': '$$today' } },
{ 'weddingAnniversary': { '$regex': '$$today' } },
],
},
],
},
},
},
{
'$project': {
'userId': 1,
'uniqueId': 1,
'mobileNumber': 1,
'whatsApp': 1,
'emailId': 1,
'lastName': 1,
'firstName': 1,
'address': 1,
'signature': 1,
},
},
],
'as': 'profile',
},
},
]
Not able to get desired output. Getting “Unrecognized expression ‘$regex’” error
[
{
'$lookup': {
'from': 'profiles',
'let': {
'userId': '$userId',
},
'pipeline': [
{
'$match': {
$expr: {
$and: [
{ '$eq': ['$uniqueId', '$mcontactId'] },
{
$or: [{ 'birthDate': { '$regex': '$today' } },
{ 'spouseBirthdate': { '$regex': '$today' } },
{ 'weddingAnniversary': { '$regex': '$today' } },
],
},
],
},
},
},
{
'$project': {
'userId': 1,
'uniqueId': 1,
'mobileNumber': 1,
'whatsApp': 1,
'emailId': 1,
'lastName': 1,
'firstName': 1,
'address': 1,
'signature': 1,
},
},
],
'as': 'profile',
},
},
]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
$regex 是一个查询运算符,您正在尝试在使用“聚合”的 $expr 中使用它“ 语言与通常在
$match
阶段使用的“查询”语言相反。除此之外,您的管道中还有其他一些问题,例如您仅将
$userId
定义为$lookup
阶段的变量,但在其中您尝试使用$$today
和$$mcontactId
未在任何地方定义。不管怎样,一旦你解决了这些问题,你就有两个选择:
$expr
之外使用$regex
,如下所示: a href="https://mongoplayground.net/p/Y8TLbLgiZ29" rel="nofollow noreferrer">Mongo Playground
$lookup
那么你需要使用聚合运算符,例如 $regexMatch 在$expr
中进行匹配$regex is a query operator, you are trying to use it within an $expr which uses the "aggregation" language as oppose to the "query" language normally used within a
$match
stage.Apart from that you have some other issue's in your pipeline, for example you only define
$userId
as a variable for the$lookup
stage but in it you're trying to use$$today
and$$mcontactId
which are not defined anywhere.Regardless once you sort out those issue's you have two options:
$regex
outside the$expr
, like so:Mongo Playground
$lookup
then you need to use an aggregation operator, like $regexMatch to do the match within the$expr