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
满足条件,任何其他值:undefined
、null
、false
、数字标量、数组或对象都不符合条件。如果将分区键作为等式筛选器的一部分包含在
WHERE
子句中,则查询仅自动筛选出相关分区。可以使用以下受支持的二元运算符:
运算符 示例 算术 +
,-
,*
,/
,%
位 \|
、&
、^
、<<
、>>
、>>>
(补零右移)逻辑 AND
,OR
,NOT
比较 =
,!=
,<
,>
,<=
,>=
,<>
字符串 \|\|
(连接)