WHERE 句 (NoSQL クエリ)

適用対象: NoSQL

オプションの WHERE 句 (WHERE <filter_condition>) は、ソース JSON 項目が、クエリの結果に含まれるために満たす必要がある条件を指定します。 結果の対象となるには、指定された条件を JSON 項目が true と評価する必要があります。 インデックス レイヤーは、WHERE 句を使用して、結果に含めることが可能なソース項目の最小のサブセットを判断します。

構文

WHERE <filter_condition>  
<filter_condition> ::= <scalar_expression>
説明
<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
  }
]

この最後の例では、ブール型プロパティへのプロパティ参照がフィルターとして使用されています。

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 のみが条件を満たし、その他の値 (undefinednullfalse、数値スカラー、配列、またはオブジェクト) は条件を満たしません。

  • WHERE 句に等値フィルターの一部としてパーティション キーを含めると、クエリは関連するパーティションのみに自動的にフィルターを適用します。

  • 次のサポートされているバイナリ演算子を使用できます。

    演算子
    算術演算子 +,-,,/*,%
    ビット演算子 \|&, ^, <<, >>>>>(ゼロフィル右シフト)
    論理 ANDORNOT
    比較 =!=, <, >, <=, >=<>
    String \|\|(連結)