Проекция MongoDB является результатом логического значения других полей

#mongodb #aggregate #projection

#mongodb #агрегат #проекция

Вопрос:

Я хочу, чтобы новое поле в результирующем наборе было проекцией. В котором значение является логическим И двух других полей.

foo и bar являются логическими полями в коллекции. Я хочу, чтобы новая проекция fooAndBar была результатом логического AND из указанных полей.

 $project : {
    'fooAndBar': {
         { $and: { [ {'$foo': 1 }, {'$bar' : 1} ] } }
     }
}
 

Я не могу заставить это работать. Я тоже пробовал использовать $cond . Возможно ли это, спасибо!

Ответ №1:

Сделайте это, это сработает

 {
"$project": {
  "fooBar": {
    $and: [
      "$foo",
      "$bar"
    ]
  }
 }
}
 

https://mongoplayground.net/p/eDL-XH56QmY

Комментарии:

1. Спасибо! Я бы этого не понял. В документации не было ясно, что будет работать простое перечисление полей $and — вместо этого во всех примерах, которые я нашел, указано, что вы должны были включить field: 1 . Откуда вы это знаете?

2. Я не эксперт в MongoDB, но поскольку mongo работает как JS, у меня было предположение, что это сработает. Надеюсь, эксперт сможет ответить на него лучше.