# 过滤条件
## 表达式
### 关系表达式
| 关系 | 运算符 | 语法 |
|:--:|:--:|:--:|
| 等于 | = | 属性名 = 值 |
| 不等于 | != | 属性名 != 值 |
| 大于 | > | 属性名 > 值 |
| 大于等于 | >= | 属性名 >= 值 |
| 小于 | < | 属性名 < 值 |
| 小于等于 | <= | 属性名 <= 值 |
| 包含 | contain | 属性名 contain 值 |
| 前缀 | startwith | 属性名 startwith 值 |
| 后缀 | endwith | 属性名 endwith 值 |
| 为空 | isnull | 属性名 isnull |
| 在列表内 | in | 属性名 in [值1, 值2, 值3...] |
::: warning 注意
* 表达式必须包含“属性名”;
* 属性名必须在表达式左端;
* 在列表内的 [] 方括号中值类型必须一致,使用 in 必须使用 [] 方括号
:::
#### 等于 =
* 字符串类型,例如查询空调机组设备 category
```metadata json
"Filters":" category = 'ATAH'"
```
* 日期类型,例如查询 2020-08-12 创建的设备 createTime
```metadata json
"Filters":" createTime = '2020-08-12'"
```
* 数值类型,例如设备有贴码状态 0.完成贴码 1.待贴码 2.带换码 3.带撕码 codeType ,查询已完成的设备
```metadata json
"Filters":" codeType = 0 "
```
* 布尔类型,例如设备有一个开关属性,实时记录设备是否在运转,停止运转时会把这个属性设置为 false ,查询为未开启的设备 switch
```metadata json
"Filters":" switch = false "
```
#### 不等于 !=
* 字符串类型,例如查询空调机组类型以外的设备 category
```metadata json
"Filters":" category != 'ATAH'"
```
* 数值类型,例如设备有贴码状态 0.完成贴码 1.待贴码 2.带换码 3.带撕码 codeType ,查询待处理的设备
```metadata json
"Filters":" codeType != 0 "
```
#### 大于 >
* 数值类型,例如设备有贴码状态 0.完成贴码 1.待贴码 2.带换码 3.带撕码 codeType ,查询带换码和带撕码的设备
```metadata json
"Filters":" codeType > 1 "
```
* 日期类型,例如查询 2020-08-12 以后创建的设备 createTime 前提是不包含 2020-08-12 这个日期的
```metadata json
"Filters":" createTime > '2020-08-12'"
```
#### 大于等于 >=
* 数值类型,例如设备有贴码状态 0.完成贴码 1.待贴码 2.带换码 3.带撕码 codeType ,查询待贴码、带换码和带撕码的设备
```metadata json
"Filters":" codeType >= 1 "
```
* 日期类型,例如查询 2020-08-12 以后创建的设备 createTime 包含 2020-08-12 这个日期的
```metadata json
"Filters":" createTime >= '2020-08-12'"
```
#### 小于 <
* 数值类型,例如设备有贴码状态 0.完成贴码 1.待贴码 2.带换码 3.带撕码 codeType ,查询待贴码、完成贴码
```metadata json
"Filters":" codeType < 2 "
```
* 日期类型,例如查询 2020-08-12 之前创建的设备 createTime 不包含 2020-08-12 这个日期的
```metadata json
"Filters":" createTime < '2020-08-12'"
```
#### 小于等于 <=
* 数值类型,例如设备有贴码状态 0.完成贴码 1.待贴码 2.带换码 3.带撕码 codeType ,查询待贴码、完成贴码和带换码的设备
```metadata json
"Filters":" codeType <= 2 "
```
* 日期类型,例如查询 2020-08-12 之前创建的设备 createTime 包含 2020-08-12 这个日期的
```metadata json
"Filters":" createTime <= '2020-08-12'"
```
#### 包含 contain
* 字符串,例如查询设备本地名称中包含 “风机” 两个字的设备 EquipLocalName
```metadata json
"Filters":" EquipLocalName contain '风机'"
```
#### 前缀
只适用于字符串类型
例如设备 id 是以 Eq 开头,空间id是以 Sp 开头,区分设备和空间就需要根据前缀来获取
```metadata json
"Filters":" Id startwith 'Eq'"
```
#### 后缀
只适用于字符串类型
例如楼层的 FloorMap 信息点是存储底图 key 值的,可能是 jsonz 压缩数据的 key ,也可能是 png 、jpg,查询后缀为 jsonz 的楼层数据
```metadata json
"Filters":" floorMap endwith 'jsonz'"
```
#### 空
判断某一个对象的某个信息点是否有值,例如查询本地名称为空的设备
```metadata json
"Filters":" EquipLocalName isnull "
```
#### 在...内
通常查询的时候会根据同一条件的多个值来获取数据,只适用于字符串类型
例如有一组设备的id列表,查询值这个把列表中的所有设备 ['id1','id2','id3','id4','id5']
```metadata json
"Filters":" EquipID in ['id1','id2','id3','id4','id5'] "
```
* 数值类型,例如设备有贴码状态 0.完成贴码 1.待贴码 2.带换码 3.带撕码 codeType ,查询完成贴码、带换码和带撕码的设备。
```metadata json
"Filters":" codeType in [0,2,3] "
```
### 逻辑表达式
| 逻辑 | 运算符 | 语法 |
|:--:|:--:|:--:|
| 非 | not
! | not 表达式
!表达式 |
| 与 | &&
and | 表达式1 && 表达式2
表达式1 and 表达式2 |
| 或 | \|\|
or | 表达式1 \|\| 表达式2
表达式1 or 表达式2 |
| 多表达式 | ; | 表达式1 ; 表达式2 ; 表大式3 ... |
#### 非
* not 例如设备有贴码状态 0.完成贴码 1.待贴码 2.带换码 3.带撕码 codeType ,查询完成贴码、带换码和带撕码的设备。