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
    比较 =!=<><=>=<>
    字符串 \|\|(连接)