过滤
1.字段过滤
当查询moment数据时,发生数据:
{
"P88666_moment":{
"id":1692611986409
}
}
返回数据:
{
"P88666_moment": {
"id": 1692611986409,
"create_user": "jcr",
"create_time": "2023-08-21 17:59:46",
"update_user": "jcr",
"update_time": "2023-08-21 17:59:46",
"mass_content_control_status": "N",
"content": "今天天气不错,到处都是提拉米苏雪",
"mDate": "2023-08-20 08:00:00",
"pictureList": ""
},
"ok": true,
"code": 200,
"msg": "success",
}
返回数据会把所有的字段都返回过来,这里这么多字段,如果我只想要content这个字段怎么办?可以这样请求
{
"P88666_moment": {
"id": 1692611986409,
"@column": "content"
}
}
@column
表示你要筛选出的字段,多个字段用逗号隔开,还可通过冒号可设置字段别名。例如
{
"P88666_moment": {
"id": 1692611986409,
"@column": "content,mDate:publishDate,pictureList:imgs"
}
}
返回数据:
{
"P88666_moment": {
"content": "今天天气不错,到处都是提拉米苏雪",
"publishDate": "2023-08-20 08:00:00",
"imgs": ""
},
"ok": true,
"code": 200,
"msg": "success",
}
字段别名会把原本数据库中的mDate,pictuureList等字段在返回结果中转化为对应的publishDate,imgs等设置的别名。
2.数据过滤
如果想要在列表中筛选出符合一定条件的数据,有以下几种方法。
2.1 逻辑运算
如查询符合 id 为指定数值的数据
请求:
{
"[]": {
"P88666_moment": {
"id{}": [1692758038614,1692757999911]
}
}
}
可查询出id为1692758038614,1692758038614的两条数据。这里可以逻辑运算符,比如 查询id 是 300 到 400 之间的,可使用"id&{}":">=300,<=400"
。
逻辑符号一共有三种,&
,|
,!
默认的逻辑关系是|
,也就是说"id|{}":"<=300,>=400"
和"id{}":"<=300,>=400"
等价。
!
主要用于反选,黑名单之类的,比如"id!{}":[12,15,32]
表示id
不在 12,15,32 内的其他数据。
还可以多个条件组合使用,如下所示,表示 id 在 10 到 40 之间,但是却不包含 12 的数据。
{
"[]": {
"P88666_moment": {
"id&{}": ">=10,<=40",
"id!{}": [12],
}
}
}
2.2 模糊查询
{
"[]": {
"P88666_moment": {
"content$": "%今天%",
}
}
}
使用方式有多种:
keyword%
,以keyword
开头的字符串。
%keyword
,以keyword
结束的字符串。
%keyword%
,包含keyword
的字符串,如:keyword123
、123keyword
、123keyword123
%k%e%y%
,包含字母k
,e
,y
的字符串
还有一种比较便捷的方式,我们这里如果使用"content~":"keyword"
来代替"content$":"%keyword%"
,同样可以表示包含某字符串。
2.3 正则匹配
{
"[]": {
"P88666_moment": {
"content?": "^[0-9]+$",
}
}
}
正则表达式^[0-9]+$
,查询content
为纯数字的数据,正则语法可参考MySQL 的正则语法。
2.4 组合过滤
当查询的过滤条件有多个时,需要用到组合过滤,用到了关键词 @combine,示例如下:
{
"[]": {
"P88666_moment": {
"id!{}": [12],
"id$": "%1\\%",
"@combine": "id$,id!{}"
}
}
}
正常情况下 id!{}
和 id$
是与的关系,即需要同时满足id!{}:[12]
和id$:"%1\\%"
的数据才会被查询出来。添加 "@combine": "id$,id!{}"
后可把与的关系转化为或的关系。常用在全字段模糊查询中。
2.5 关联过滤
当需要查询关联表符合一定的条件的主表数据时,就需要用到关联过滤。
如果按照普通过滤的方式,在P54270_moment_news_link
或者P54270_news
中添加过滤条件,实际并不影响P54270_moment
的返回结果,只是P54270_moment
下对应的P54270_moment_news_link
或者P54270_news
没有数据。例如:在上述Moment
模型查询News
title
为xxxxx
的数据,在上述请求中P54270_news
添加"title": "xxxxx"
的过滤条件,
返回结果如下:
{
"[]": [
{
"P54270_moment": {
"id": 1692774640609,
"content": "今天天气还是不错的",
"mDate": "2023-08-10"
},
"P54270_moment_news_link_[]": [
{
"P54270_moment_news_link": {
"id": 1692847143874,
"entity_id": 1692774640609,
"entity_link_id": 1692841656558,
"filed": "news",
"show_value": "瓦格纳几乎所有高层均在坠毁飞机上"
}
}
]
},
{
"P54270_moment": {
"id": 1692778412077,
"content": "今天又下起了小雪",
"mDate": "2023-08-15"
},
"P54270_moment_news_link_[]": [
{
"P54270_moment_news_link": {
"id": 1692841668849,
"entity_id": 1692778412077,
"entity_link_id": 1692841637131,
"filed": "news",
"show_value": "新华时评:日本强排核污染水自毁国家形象"
}
}
]
}
],
"ok": true,
"code": 200,
"msg": "success"
}
如结果所示,只是没有返回P54270_news
的数据,显示与预期不符。可以通过以下方式查询
发送数据
{
"[]": {
"P54270_moment": {
"id@": {
"from": "P54270_moment_news_link",
"P54270_moment_news_link": {
"@column": "entity_id",
"show_value": "海洋动物数量减少"
}
},
"@order": "create_time-"
},
"P54270_moment_news_link_[]": {
"P54270_moment_news_link": {
"entity_id@": "[]/P54270_moment/id"
},
"P54270_news": {
"id@": "[]/P54270_moment_news_link_[]/P54270_moment_news_link/entity_link_id"
}
}
}
}
响应结果:
{
"[]": [
{
"P54270_moment": {
"id": 1692778412077,
"create_user": "jcr",
"create_time": "2023-08-23 16:13:31",
"update_user": "jcr",
"update_time": "2023-08-24 09:47:48",
"mass_content_control_status": "N",
"content": "今天又下起了小雪",
"mDate": "2023-08-15"
},
"P54270_moment_news_link_[]": [
{
"P54270_moment_news_link": {
"id": 1692841668849,
"entity_id": 1692778412077,
"entity_link_id": 1692841637131,
"filed": "news",
"show_value": "海洋动物数量减少"
},
"P54270_news": {
"id": 1692841637131,
"create_user": "jcr",
"create_time": "2023-08-24 09:47:16",
"update_user": "jcr",
"update_time": "2023-08-24 09:47:16",
"mass_content_control_status": "Y",
"title": "海洋动物数量减少"
}
}
]
}
],
"ok": true,
"code": 200,
"msg": "success"
}
成功筛选出了关联数据 title
为 海洋动物数量减少
的moment
集合数据。
在 P54270_moment
中通过 id@{from:}
添加子查询,通过在子查询中添加过滤条件,从而查询符合条件的正确数据。