## 数据结构 ``` { "page": 1, "size": 20, "onlyCount": false, "criteria": { "age": { "$gt": 21 } }, "orders": [ { "column": "name", "asc": false } ], "withColumns": [ "roles" ] } ``` 返回格式 ```json { "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.性能差!性能差!性能差! ``` ```json { "criteria": { "$search": "关键字" } } ``` ``` 1.直接放在criteria下,只能对字符串字段进行查询 2.支持通配符%, 如"%abc%"将返回信息点的值中包含abc的对象 3.固定字段(id,localId,name,localName,classCode...等)无效 4.信息点的值可能是对象,若对象的属性符合条件则该对象也将被返回 ``` #### 数组查询 \$contains \$notcontains 特别说明: ``` 1.业务含义不可靠,使用该查询之前务必搞清楚自己的目的是什么 2.性能差!性能差!性能差! ``` ```json { "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相反,但是首先要求查询字段有值 ```