Значение агрегации изменить логическое значение на строку - PullRequest
2 голосов
/ 23 марта 2020

Иметь коллекцию с записями, Нужно преобразовать логические значения столбца в строку:

[
  {
    _id: "bmasndvhjbcw",
    name: "lucas",
    occupation: "scientist",
    passed_phd: true,
    age: 55,
    location: "texas",

  },
  {
    _id: "bmasndvhjbcx",
    name: "mark",
    occupation: "scientist",
    age: 45,
    passed_phd: true,
    location: "texas",

  },
  {
    _id: "bmasndvhjbca",
    name: "stuart",
    occupation: "lab assistant",
    age: 25,
    passed_phd: false,
    location: "texas",

  },
  {
    _id: "bmasndvhjbcq",
    name: "cooper",
    occupation: "physicist",
    age: 69,
    passed_phd: false,
    location: "texas"
  }
]

как изменить логическое значение записей в строку.

значение, имеющее true (логическое значение) в значение_передачи, должно быть преобразовано в «yes» (строка)

значение, которое имеет значение false (логическое значение) в переданном_поле, должно быть преобразовано в «нет» (строка)

[
  {
    _id: "bmasndvhjbcw",
    name: "lucas",
    occupation: "scientist",
    passed_phd: "yes",
    age: 55,
    location: "texas",

  },
  {
    _id: "bmasndvhjbcx",
    name: "mark",
    occupation: "scientist",
    age: 45,
    passed_phd: "yes",
    location: "texas",

  },
  {
    _id: "bmasndvhjbca",
    name: "stuart",
    occupation: "lab assistant",
    age: 25,
    passed_phd: "no",
    location: "texas",

  },
  {
    _id: "bmasndvhjbcq",
    name: "cooper",
    occupation: "physicist",
    age: 69,
    passed_phd: "no",
    location: "texas"
  }
]

mongodb версия 4.0.

1 Ответ

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

Оператор конвейера агрегации $ cond может сделать это.

Начиная с MongoDB 4.2, их можно использовать в обновлении или в конвейере агрегации, например:

db.collection.aggregate([
    {$set:{
            passed_phd:{
                        $cond:{
                               if:"$passed_phd",
                               then:"yes",
                               else:"no"
                              }
                        }
   }}
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...