在一些源平台的查询接口过滤条件不够丰富的情况下,condition 配置参数可以丰富数据过滤的方式。在源平台查询队列拉取到数据,准备写入到 mongoDB 之前这些查询条件会发挥作用。如果不满足条件他们将不会被写入到 mongoDB。
⚠️ ⚠️ ⚠️
查询条件仅在源平台配置中生效
基本使用方法
点开源平台配置的源码视图,可以在一级对象下面新增一个对象:condition
condition应该为一个数组,并且它的下级子成员也是一个数组
数组的逻辑关系如下图:
过滤对象
一个基本的过滤对象应该至少包含三个部分:字段field、逻辑logic、值value;
当需要处理子表或者表体字段时,字段可以书写成: items.name 的方式;
目前支持的 logic 运算符:
- eq等于
- neq不等于
- gt大于 在日期大小判断时,需要转换为时间戳。在value前面增加timestamp
- egt大于等于
- lt小于
- elt小于等于
- like包含
- notlike不包含
- between范围,范围逻辑下你的 value 字段应该是: 100,500 使用逗号隔开书写两个值
- notnull不为空 你可以不用输入 value
- isnull为空 你可以不用输入 value
表体严格模式 strictMode
⚠️ 在一些特殊的表体过滤中 还支持:strictMode 是否为严格模式
| 行号 | 货品编码 | 货品名称 | 数量 | 仓库 | 备注 |
|---|---|---|---|---|---|
| 1 | AAA0001 | 电动剃须刀 | 1000 | CK0001 | |
| 2 | BBB0001 | 磨牙棒 | 500 | YY002 | |
| 3 | EEE0088 | 飞天茅台 | 88 | MT0003 |
{"field": "表体.仓库","logic": "like","value": "MT","strictMode": true}
如果开启严格模式 strictMode=>true 该表中只有一行满足条件仍然会丢弃整张单据。
如果 strictMode=>false 关闭严格模式,那么系统会保留第三行数据,删除另外两行不满足条件的数据。
⚠️ ⚠️ ⚠️
strictMode 默认是不开启的
完整示例
{"api": "purchasein.query","type": "QUERY","method": "POST","number": "io_id","id": "io_id","condition": [[{"field": "io_id","logic": "eq","value": "816403"},{"field": "items.name","logic": "like","value": "活动","strictMode": true}],[{"field": "io_id","logic": "like","value": "512"}],[{"field": "items.name","logic": "eq","value": "企鹅爸爸15合1桌游"}]],"more": "......"}
以上配置转译后可以理解为:
( ioid 等于 816403 并且 items.name 包含 活动|严格模式_ )
或者 ( io_id 包含 512)
或者 ( items.name 等于 企鹅爸爸15合1桌游)
