[英]$or inside $and in $filter condition not working
I am using golang with mongodb,mgo collection我正在使用 golang 和 mongodb,mgo 集合
My mongodb collection is我的 mongodb 集合是
**department**
{
dept_id:1,
dept_name:'CSE',
dept_overview:'overview'
}
................
**employee**
{
emp_id:1,
emp_name:'abc',
qualification:'PHD',
emp_dept:'CSE',
city:'xyz'
}
{
emp_id:2,
emp_name:'xyz',
qualification:'PHD',
emp_dept:'CSE',
city:'xyz',
status:1
}
..........
Below is my Go code using pipeline下面是我使用管道的 Go 代码
var conditionParam []bson.M
if(city!=""){
conditionParam = []bson.M{
bson.M{"$eq": []string{"$$element.qualification", "PHD"}},
bson.M{"$eq": []string{"$$element.emp_dept", "CSE"}},
bson.M{"$eq": []string{"$$element.city", "xyz"}},
bson.M{"$or": []bson.M{
bson.M{"$$element.status": bson.M{"$exists": false}},
bson.M{"$$element.status": 1}},
},
}
}else if(){
--------------------
}
matchStage:=bson.M{"$match":bson.M{'dept_id':1}}
lookupStage:=bson.M{"$lookup": bson.M{
"from": "employee",
"localField": "dept_name",
"foreignField": "emp_dept",
"as": "result_list",
}}
pipeline := getCollection.Pipe([]bson.M{
matchStage,
lookupStage,
{"$addFields": bson.M{
"result_list": bson.M{
"$filter": bson.M{
"input": "$result_list",
"as": "element",
"cond": bson.M{
"$and": conditionParam,
},
},
},
}},
})
This code return error此代码返回错误
Unrecognized expression '$$element.status'
How We can use $or
inside $and
in golang using mgo collection?我们如何使用 mgo 集合在 golang 中使用
$or
在$and
内部?
when I put comment on or
statement it returns the result but when I used the or
it gives error.Can anyone suggest me how to use $or inside $and in pipeline当我对
or
声明发表评论时它返回结果但是当我使用or
它给出错误。谁能建议我如何使用 $or inside $and in pipeline
var conditionParam []bson.M
if city == "" {
conditionParam = []bson.M{
bson.M{"$eq": []string{"$$element.qualification", "PHD"}},
bson.M{"$eq": []string{"$$element.emp_dept", "CSE"}},
bson.M{"$eq": []string{"$$element.city", "xyz"}},
bson.M{"$or": []interface{}{"$exists", []interface{}{"$$element.status", false}}},
bson.M{"$or": []interface{}{"$$element.status", 1}},
}
}
I tried this code to write conditionParam and It worked for me.我试过这段代码来编写 conditionParam 并且它对我有用。 I did not check all the cases yet but I want to know yours suggesstion, Is it right way to write the
or
operator to check field exists and if exists check its value.我还没有检查所有情况,但我想知道您的建议,编写
or
运算符来检查字段是否存在是否正确,如果存在则检查其值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.