如何在 mongo 中的 $switch 语句中执行 $match
How to perform a $match inside $switch statement in mongo
我想在聚合查询中的 $switch 中执行搜索。我想持有一个变量并根据前端的数据更改它。如果那个变量 "com" 我想执行搜索。用简单的话我可以描述如下,
let search="com"
if(search=="com") {
$match{
com: {$regex: "search_data"}}
}
这是我尝试执行任务的方式:
{
$match: {
$expr: {
$switch: {
branches: [
{
case: {
$eq: ['$search', 'com']
},
then: {
com: { $regex: "serch_data" }
}
},
],
default: {}
}
}
}
您不应使用 $search
,而应使用 case: { $eq: ['com', search ] }
。 $search
引用文档中的字段。
并使用 $regexMatch
运算符,$regex
运算符在聚合管道中不支持。
{
$match: {
$expr: {
$switch: {
branches: [
{
case: {
$eq: [
"com",
search // search variable
]
},
then: {
$regexMatch: {
input: "$com",
regex: "serch_data"
}
}
},
],
default: {}
}
}
}
}
我想在聚合查询中的 $switch 中执行搜索。我想持有一个变量并根据前端的数据更改它。如果那个变量 "com" 我想执行搜索。用简单的话我可以描述如下,
let search="com"
if(search=="com") {
$match{
com: {$regex: "search_data"}}
}
这是我尝试执行任务的方式:
{
$match: {
$expr: {
$switch: {
branches: [
{
case: {
$eq: ['$search', 'com']
},
then: {
com: { $regex: "serch_data" }
}
},
],
default: {}
}
}
}
您不应使用 $search
,而应使用 case: { $eq: ['com', search ] }
。 $search
引用文档中的字段。
并使用 $regexMatch
运算符,$regex
运算符在聚合管道中不支持。
{
$match: {
$expr: {
$switch: {
branches: [
{
case: {
$eq: [
"com",
search // search variable
]
},
then: {
$regexMatch: {
input: "$com",
regex: "serch_data"
}
}
},
],
default: {}
}
}
}
}