Как сделать нечувствительную к регистру фильтрацию в mon goose? - PullRequest
1 голос
/ 18 февраля 2020

Я только начал работать с MongoDB и ниже мой код. Мне нужно игнорировать обсадные колонны при фильтрации данных, как это сделать?

db.collection.aggregate([

  {
    $project: {
      _id: 0,
      name: 1,
      data: {
        $filter: {
          input: "$data",
          as: "el",
          cond: {
            $in: [
              "$$el",
              [
                "Min", //need to ignore casing
                "max",
                "gg"
              ]
            ]
          }
        }
      }
    }
  }
])

Заранее спасибо

1 Ответ

1 голос
/ 18 февраля 2020

Вы можете использовать оператор $toLower, чтобы преобразовать элемент фильтра в нижний регистр, а затем убедиться, что все элементы массива в условном выражении находятся в нижнем регистре:

db.collection.aggregate([
  {
    $project: {
      _id: 0,
      name: 1,
      data: {
        $filter: {
          input: "$data",
          as: "el",
          cond: {
            $in: [
              // Convert the input element to lower case
              { "$toLower": "$$el" },
              // Ensue all the elements of the array below are in lower case
              [
                "min",
                "max",
                "gg"
              ]
            ]
          }
        }
      }
    }
  }
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...