Поделиться через


Предложение WHERE (запрос NoSQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

WHERE Необязательное предложение (WHERE <filter_condition>) указывает условия, которые исходные элементы JSON должны удовлетворять запросу, чтобы включить их в результаты. Элемент JSON должен при вычислении указанных условий возвращать значение true, чтобы он включался в результат. Слой индекса использует WHERE предложение для определения наименьшего подмножества исходных элементов, которые могут быть частью результата.

Синтаксис

WHERE <filter_condition>  
<filter_condition> ::= <scalar_expression>
Description
<filter_condition> Указывает условие, которое необходимо выполнить для возвращаемых элементов.
<scalar_expression> Выражение, представляющее вычисляемое значение.

Примечание.

Дополнительные сведения о скалярных выражениях см . в скалярных выражениях

Примеры

В первом примере используется простой запрос на равенство для возврата подмножества элементов. Оператор = используется с WHERE предложением для создания фильтра на основе простого равенства.

SELECT VALUE {
    employeeName: e.name,
    currentTeam: e.team
}
FROM
    employees e
WHERE
    e.team = "Hospitality"
[
  {
    "employeeName": "Jordan Mitchell",
    "currentTeam": "Hospitality"
  },
  {
    "employeeName": "Ashley Schroeder",
    "currentTeam": "Hospitality"
  },
  {
    "employeeName": "Tomas Richardson",
    "currentTeam": "Hospitality"
  }
]

В следующем примере более сложный фильтр состоит из скалярных выражений.

SELECT VALUE {
    employeeName: e.name,
    vacationDaysRemaining: e.vacationDays
}
FROM
    employees e
WHERE
    e.vacationDays >= 7
[
  {
    "employeeName": "Ana Bowman",
    "vacationDaysRemaining": 10
  },
  {
    "employeeName": "Madison Butler",
    "vacationDaysRemaining": 7
  }
]

В этом последнем примере в качестве фильтра используется ссылка на свойство boolean.

SELECT VALUE {
    employeeName: e.name,
    isPartTime: e.partTime
}
FROM
    employees e
WHERE
    e.partTime
[
  {
    "employeeName": "Riley Ramirez",
    "isPartTime": true
  },
  {
    "employeeName": "Caleb Foster",
    "isPartTime": true
  }
]

Замечания

  • Чтобы возвращаемый элемент, выражение, указанное как условие фильтра, должно иметь значение true. Только логическое значение удовлетворяет условию, любое другое значение true : undefined, null, falseчисло скаляр, массив или объект не удовлетворяет условию.

  • Если ключ секции включен в предложение в WHERE рамках фильтра равенства, запрос автоматически фильтрует только соответствующие секции.

  • Можно использовать следующие поддерживаемые бинарные операторы:

    Операторы Примеры
    Арифметические +,-,,*,/%
    Побитовое \|, &, ^>>> <<>>(нулевой заливки вправо)
    Логическое AND, , ORNOT
    Сравнение =, !=, <><=>=<>
    String \|\|(сцепление)