我的文档如下
doc = {
name: 'abc',
age:20
}
我的查询看起来像
{ $expr: {$and:[{ $gt:[ "$age", 10 ] },
{ $regex:["$name",'ab']}
]
}
} }
但它不起作用,我得到一个错误
无法识别的表达式"$regex">
如何使其工作?
我的原始查询看起来像这个
db.orders.aggregate([{
$match: {}},
{$lookup: {
from: "orders",
let: {
"customer_details": "$customerDetails"
},
pipeline: [
{
$match: {
$expr: {
$and: [
{ $or: [
{
$eq: ["$customerDetails.parentMobile","$$customer_details.parentMobile"]
},
{$eq: ["$customerDetails.studentMobile","$$customer_details.parentMobile"]
},
{$eq: ["$customerDetails.studentMobile","$$customer_details.parentMobile"]
},
{$eq: ["$customerDetails.studentMobile","$$customer_details.studentMobile"]
}
]
},
{$eq: ["$customerDetails.zipCode","$$customer_details.zipCode"]},
{$eq: ["$customerDetails.address","$$customer_details.address"]}
]
}
}
}],
as: "oldOrder"
}
}])
我想使用regex
来匹配address
。
任何帮助都将不胜感激。提前谢谢。
$regex
是一个查询运算符,您不能在$expr
中使用,因为它只支持聚合管道运算符。
{
"$expr": { "$gt": ["$age", 10] } ,
"name": { "$regex": "ab" }
}
如果您有mongodb4.2,您可以使用$regexMatch
{ "$expr": {
"$and": [
{ "$gt": ["$age", 10] },
{
"$regexMatch": {
"input": "$name",
"regex": "ab", //Your text search here
"options": "i",
}
}
]
}}
如果您的mongoDB版本是4.2,那么您可以使用$regexMatch
试试这个
db.collection.find({
$expr: {
$and: [
{
$gt: [
"$age",
10
]
},
{
$regexMatch: {
input: "$name",
regex: "ab"
}
}
]
}
})
查看此Mongo Playground