为了满足复杂的数据查询需求,伙伴云对查询数据的条件做了一次抽象,提炼出 筛选器 对象的概念。在伙伴云的接口中,筛选器 对象被广泛地使用,包括数据查询,表格行权限,关联数据条件等等场景。

筛选器示例

以下是一个标准的筛选器的数据结构:

{
    "and": [
        {
            "field": 7256086,
            "query": {
                "eq": "测试"
            }
        },
        {
            "or": [
                {
                    "field": 7256086,
                    "query": {
                        "in": [1, 2, 3]
                    }
                },
                {
                    "field": "7256086",
                    "query": {
                        "em": true
                    }
                }
            ]
        }
    ]
}

数据结构

筛选项

筛选器的最小单位是 筛选项 对象,一个标准的 筛选项 对象如下所示:

{
    "field": 7256086,
    "query": {
        "eq": "匹配的字符"
    }
}

字段说明

字段名称 字段说明
field 筛选的字段,可以是表格普通字段也可以是数据的系统字段(如创建时间等)
query 筛选的查询条件,详情会在后续针对不同的表格字段单独说明


筛选逻辑

筛选器可以通过 筛选逻辑 对象组合出满足各种场景的查询条件。一个简单的带 筛选逻辑 的筛选器如下所示:

{
    "and": [
        {
            "field": 7256086,
            "query": {
                "eq": "匹配的字符"
            }
        },
        {
            "field": 7256087,
            "query": {
                "in": [1, 2, 3]
            }
        }
    ]
}

目前 筛选逻辑 支持的逻辑关键字包括:andor,关键字是由 筛选项筛选逻辑 组成的集合,每个集合组合出的条件逻辑遵循关键字表达逻辑。

假设我们有以下的查询条件:

A AND (B OR C)

转换为筛选器后的数据结构如下:

{
    "and": [
        A,
        {
            "or": [
                B,
                C
            ]
        }
    ]
}

应用场景

伙伴云的表格中不同的字段所能使用的 筛选项 中的查询条件(query)是不同的。


数据唯一标识字段

QUERY 关键字 示例 示例说明
eq "eq": "2000" 匹配等于 ID=2000 的数据
ne "ne": "2000" 匹配不等于 ID=2000 的数据
in "in": ["2000", "2001"] 匹配包含 ID=2000 或 ID=2001 的数据
nin "nin": ["2000", "2001"] 匹配不包含 ID=2000 或 ID=2001 的数据


创建人/用户字段

QUERY 关键字 示例 示例说明
eq "eq": ["1000"] 匹配等于 ID=1000 的用户的数据
ne "ne": ["1000"] 匹配不等于 ID=1000 的用户的数据
in "in": ["1000", "1001"] 匹配包含 ID=1000 或 ID=1001 的用户的数据
nin "nin": ["1000", "1001"] 匹配不包含 ID=1000 或 ID=1001 的用户的数据
em "em" : true 匹配值为空的数据(创建人无效)

用户字段支持的变量:

  • myself 当前登录用户


创建时间/时间字段

QUERY 关键字 示例 示例说明
eq "eq": "2015-05-11" 匹配等于2015年5月11日的数据
ne "ne": "2015-05-11" 匹配不等于2015年5月11日的数据
gt "gt": "2015-05-11" 匹配大于2015年5月11日的数据
gte "gte": "2015-05-11" 匹配大等于2015年5月11日的数据
lt "lt": "2015-05-11" 匹配小于2015年5月11日的数据
lte "lte": "2015-05-11" 匹配小等于2015年5月11日的数据
em "em" : true 匹配值为空的数据(创建时间无效)

时间字段支持的变量:

  • today 当前日期
  • yesterday 当前日期的前一天
  • tomorrow 当前日期的后一天
  • last_week 过去的7天
  • last_month 过去的30天
  • next_week 未来的7天
  • next_month 未来的30天
  • this_whole_month 当前月
  • last_whole_month 上月
  • next_whole_month 下月
  • this_quarter 当前季度
  • last_quarter 上一季度
  • next_quarter 下一季度


文本字段

QUERY 关键字 示例 示例说明
eq "eq": "匹配的文本" 匹配等于“匹配的文本”的数据
ne "ne": "匹配的文本" 匹配不等于“匹配的文本”的数据
in "in" : ["匹配的文本1", "匹配的文本2"] 匹配包含 “匹配的文本1” 或 “匹配的文本2” 的文本的数据
nin "nin" : ["匹配的文本1", "匹配的文本2"] 匹配不包含 “匹配的文本1” 或 “匹配的文本2” 的文本的数据
em "em" : true 匹配值为空的数据


数字字段/计算字段

QUERY 关键字 示例 示例说明
eq "eq": 20 匹配等于20的数据
ne "ne": 20 匹配不等于20的数据
gt "gt": 20 匹配大于20的数据
gte "gte": 20 匹配大等于20的数据
lt "lt": 20 匹配小于20的数据
lte "lte": 20 匹配小等于20的数据
em "em" : true 匹配值为空的数据


选项字段

QUERY 关键字 示例 示例说明
eq "eq": ["1"] 匹配等于 ID=1 的选项的数据
ne "ne": ["1"] 匹配不等于 ID=1 的选项的数据
in "in": ["1", "2"] 匹配包含 ID=1 或 ID=2 的选项的数据
nin "nin": ["1", "2"] 匹配不包含 ID=1000 或 ID=2 的选项的数据
em "em" : true 匹配值为空的数据


关联字段

QUERY 关键字 示例 示例说明
eq "eq": ["2000"] 匹配等于 ID=2000 的关联数据的数据
ne "ne": ["2000"] 匹配不等于 ID=2000 的关联数据的数据
in "in": ["2000", "2001"] 匹配包含 ID=2000 或 ID=2001 的关联数据的数据
nin "nin": ["2000", "2001"] 匹配不包含 ID=2000 或 ID=2001 的关联数据的数据
em "em" : true 匹配值为空的数据


图片字段/附件字段

QUERY 关键字 示例 示例说明
em "em" : true 匹配值为空的数据