#mongodb #go #mgo
#mongodb #Вперед #mgo
Вопрос:
Я использую go lang в серверной части и MongoDB в качестве своей базы данных.В моем конвейере mgo я выбираю некоторые значения из моего MongoDB. Ниже приведено эквивалентное условие go lang, которое работает
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, это не работает.Это не выдает ошибку, а просто пропускает это ! = условие.
Ниже приведено эквивалентное условие go lang, которое мне нужно реализовать, но оно не работает
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,
},
},
},
)
Но они не работают.Ценю любую помощь.Спасибо
Комментарии:
1. Вы пробовали not in ($ nin) ?
type ".status": bson.M{ "$nin":[]interface{"Processing","Denied"} }
2. Спасибо Клавери. Это сработало……