在一些源平台的查询接口过滤条件不够丰富的情况下,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 是否为严格模式
{
"field": "表体.仓库",
"logic": "like",
"value": "MT",
"strictMode": true
}
如果开启严格模式 strictMode=>true 该表中只有一行满足条件仍然会丢弃整张单据。
如果 strictMode=>false 关闭严格模式,那么系统会保留第三行数据,删除另外两行不满足条件的数据。
完整示例
{
"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": "......"
}
以上配置转译后可以理解为:
( io_id 等于 816403 并且 items.name 包含 活动|严格模式 )
或者 ( io_id 包含 512)
或者 ( items.name 等于 企鹅爸爸15合1桌游)