Как проверить, все ли данные соответствуют значению в mon goose? - PullRequest
0 голосов
/ 05 января 2020

моя коллекция

{
id:1,
 "codes": [
            1,
            0,
            0
        ]
}

я должен проверить, все ли значения в кодах соответствуют 1, я попробовал следующее

 value: {
                    $max: {
                        $cond: [{
                            $and: [{ $eq: ["$data.count_3", 1] },

                            ]
                        },
                            0,
                            1]
                    }
                },

this.data.count_3 имеет значения кода i, e [1,0,0]

, но он не работает нормально. Я использую переменную правильно. Пожалуйста, помогите. Спасибо заранее

1 Ответ

0 голосов
/ 05 января 2020

Вы можете сравнивать массивы до / после $filter ing. Измените это условие "$eq": ["$$this", 1], чтобы отфильтровать только действительные элементы.

db.collection.aggregate([
  {
    $project: {
      value: {
        $cond: [
          {
            $eq: [
              "$codes",
              {
                $filter: {
                  input: "$codes",
                  cond: {
                    "$eq": [
                      "$$this",
                      1
                    ]
                  }
                }
              }
            ]
          },
          1,
          0
        ]
      }
    }
  }
])

MongoPlayground

...