$ ne для проверки двух полей в MongoDB с помощью golang (mgo)

#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. Спасибо Клавери. Это сработало……