query.md 5.3 KB

数据结构

{
    "page": 1,
    "size": 20,
    "onlyCount": false,
    "criteria": {
        "age": {
            "$gt": 21
        }
    },
    "orders": [
        {
            "column": "name",
            "asc": false
        }
    ],
    "withColumns": [ "roles" ]
}

返回格式

{
    "result": "success",
    "data": [
        {
            "id": "dev_1",
            "groupCode": "PG",
            "type": "major",
            "name": "专业",
            "description": "Testing",
            "status": 1,
            "createTime": 1602434380000,
            "createUser": "wdl",
            "updateTime": 1602705427000,
            "updateUser": "wdl",
            "remark": "Testing"
        }
    ],
    "count": 1
}

参数说明

字段 说明
page 分页页码,从 1 开始
size 分页大小
onlyCount 是否只统计数量,默认 false
criteria 查询条件
orders object[] 排序参数,支持多个字段排序
column 排序字段
asc 是否升序,默认 true
withColumns 额外返回的扩展字段清单

criteria 说明

符号说明

符号 说明
\$ne dayu
\$gt, \$gte, \$lt, \$lte 大于, 大于等于, 小于, 小于等于
\$in 范围查询
\$like, \$notlike 模糊匹配 不匹配
\$null 是否为空

以下实例针对的实体类型 user 如下

字段 类型
id int
name string
age int

相等

查询 name 为 zhangsan 的数据

{
    "criteria": {
        "name": "zhangsan"
    }
}

不等于

查询 name 不等于张三的数据

{
    "criteria": {
        "name": {
            "$ne": "zhangsan"
        }
    }
}

是否为空

查询 name 不为空的数据

{
    "criteria": {
        "name": {
            "$null": false
        }
    }
}

比较大小

查询 age 大于 25 小于 35 的数据

{
    "criteria": {
        "age": {
            "$gt": 25,
            "$lt": 35
        }
    }
}

in 查询

查询 name 为 zhangsan、lisi 的数据

{
    "criteria": {
        "name": {
            "$in": [ "zhangsan", "lisi" ]
        }
    }
}

也可直接写成

{
    "criteria": {
        "name": [ "zhangsan", "lisi" ]
    }
}

模糊查询

查询 name 以 zh 开头的数据

{
    "criteria": {
        "name": {
            "$like": "zh%"
        }
    }
}

withColumns 说明

通过 withColumns 可以控制返回的数据内容,可以一定程度上提供服务性能.

withColumns 粒度比较粗,一般由服务提供者决定哪些字段可以通过 withColumns 来控制.

假设数据如下

{
    "name": "zhangsan",
    "age": 22,
    "roles": [ "administrator", "manager" ]
}

将 roles 设计为可选字段,由 withColumns 来管理,如果查询参数中有 withColumns 并包含 roles,则返回 roles 字段

默认查询和返回的数据内容为

{
    "criteria": {
        "name": "zhangsan"
    }
}
{
    "name": "zhangsan",
    "age": 22
}

包含 withColumns 时的查询参数和返回的数据

{
    "criteria": {
        "name": "zhangsan"
    },
    "withColumns": [ "roles" ]
}
{
    "name": "zhangsan",
    "age": 22,
    "roles": [ "administrator", "manager" ]
}

物理世界对象信息点相关查询

\$search

特别说明:

1.业务含义不可靠,目前除"查询绑定了某个表号功能号的对象"这一个场景外暂时没有合理使用该查询的业务场景
2.性能差!性能差!性能差!
{
    "criteria": {
        "$search": "关键字"
    }
}
1.直接放在criteria下,只能对字符串字段进行查询
2.支持通配符%, 如"%abc%"将返回信息点的值中包含abc的对象
3.固定字段(id,localId,name,localName,classCode...等)无效
4.信息点的值可能是对象,若对象的属性符合条件则该对象也将被返回

数组查询 \$contains \$notcontains

特别说明:

1.业务含义不可靠,使用该查询之前务必搞清楚自己的目的是什么
2.性能差!性能差!性能差!
{
    "criteria": {
        "arr": {
            "$contains": "1"
        },
        "arr2": {
            "$contains": [1, 3, 5]
        }
    }
}
1.直只能对复数信息点进行查询
2.只要数组包含条件对应的值即查询条件成立,如[1,2,3]对1成立, [1,2,3]对[1,2]成立, [[1,2,3], [4,5,6]]对[1]成立, [[1,2,3], [4,5,6]]对[1,2]成立,[[1,2,3], [4,5,6]]对[1,5]成立
3.固定字段(id,localId,name,localName,classCode...等)无效
4.$notcontains含义与$contains相反,但是首先要求查询字段有值