我在后端使用go lang而mongoDB作为我的数据库。在我的mgo管道中,我从我的mongoDB中选择了一些值。以下是正在运行的等效条件
if status !="Processing"{
//then select or project the values
}
mgo查询如下,这是有效的
pipe10 := c.Pipe([]bson.M{
{
"$unwind": "$" + type,
},
{
"$match": bson.M{
type + ".status": bson.M{
"$ne": "Processing",
},
},
},
{
"$project": bson.M{
"name": 1,
},
},
},
)
但是当我尝试为$ ne添加另一个值时,这不起作用。这不会引发错误但只是它会跳过这个!=条件。 以下是我需要实现并且无法正常运行的等效条件
if status !="Processing" || status !="Denied{
//then select or project the values
}
我在mgo中尝试了以下
1. pipe10 := c.Pipe([]bson.M{
{
"$unwind": "$" + type,
},
{
"$match": bson.M{
type + ".status": bson.M{
"$ne":[]interface{"Processing","Denied"}
},
},
},
{
"$project": bson.M{
"name": 1,
},
},
},
)
2. pipe10 := c.Pipe([]bson.M{
{
"$unwind": "$" + type,
},
{
"$match": bson.M{
type + ".status": bson.M{
"$ne":bson.M{
"$in":[]interface{"Processing","Denied"}
},
},
},
},
},
{
"$project": bson.M{
"name": 1,
},
},
},
)
3. pipe10 := c.Pipe([]bson.M{
{
"$unwind": "$" + type,
},
{
"$match": bson.M{
type + ".status": bson.M{
"$ne":bson.M{
"$or":[]interface{"Processing","Denied"}
},
},
},
},
},
{
"$project": bson.M{
"name": 1,
},
},
},
)
但这些都没有用。感谢任何帮助。谢谢