Mongodb вычитание двух полей Int32 приводит к нулевому значению - PullRequest
1 голос
/ 23 марта 2020

Я собираю некоторые данные, которые включают следующую проекцию.

Запрос:

{"$project": {
            "subbedout": {"$toInt": {"$ifNull": ["$outmin", "$endgame"]}},
            "subbedin": {"$toInt": {"$ifNull": ["$inmin", 0]}},
            "minutes": {"$subtract": ["$subbedout", "$subbedin"]}
        }

Поля subbedout и subbedin соответствуют ожидаемым и оба Int32 , но все значения поля минут null .

Что я делаю не так?

1 Ответ

1 голос
/ 23 марта 2020

Вы создаете эти два поля в одной проекции, которая вызывает эту проблему, вам нужно разделить его на два этапа или выполнить операции {"$toInt": {"$ifNull": ["$outmin", "$endgame"]}} & {"$toInt": {"$ifNull": ["$inmin", 0]}} в $subtract:

db.collection.aggregate([
  {
    "$project": {
      "subbedout": "$a",
      "subbedin": "$b"
    }
  },
  {
    $project: {
      "minutes": {
        "$subtract": [
          "$subbedout",
          "$subbedin"
        ]
      }
    }
  }
])
...