Как получить документы с определенным значением из агрегации в mongodb? - PullRequest
0 голосов
/ 21 июня 2019

Допустим, у меня есть следующие документы:

документ 1:

_id:"1"
name:"Item 1"
quantity:1
min:3
alert:"Yes"

документ 2:

_id:"2"
name:"Item 2"
quantity:12
min:5
alert:"No"

Как получить только документы с предупреждениемзначение «Да», исключая документы со значением предупреждения «Нет»?

Те документы, которые я получил из некоторых агрегатов:

[
  {
    '$group': {
      '_id': '$id', 
      'name': {
        '$first': '$name'
      }, 
      'sum_quantity': {
        '$sum': '$quantity'
      }, 
      'alertMin': {
        '$first': '$alertMin'
      }
    }
  }, {
    '$project': {
      '_id': '$_id', 
      'name': '$name', 
      'quantity': '$sum_quantity', 
      'minimum': '$alertMin', 
      'alert': {
        '$cond': [
          {
            '$lte': [
              '$sum_quantity', '$alertMin'
            ]
          }, 'Yes', 'No'
        ]
      }
    }
  }
]

Ожидается следующий результат:

_id:"1"
name:"Item 1"
quantity:1
min:3
alert:"Yes"

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Вы можете сделать это с помощью одной стадии конвейера $ match. Вам не нужно использовать какой-либо другой этап для этого.

Попробуйте как показано ниже:

 db.collection.aggregate([
     {
        $match: {
            alert: "Yes"
        }       
     }
 ])
0 голосов
/ 21 июня 2019

Добавьте $match этап в конце вашего aggregation конвейера (или там, где вы хотите совпадение), и он даст вам желаемый результат.

{
    $match : {
        alert : "yes"
    }
}

Подробнее о $ совпадение здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...