Directus Rest API URL处理较为复杂的数据查询Filter

Direcctus REST Api URL中支持JSON和数组两种格式的数据查询,一些复杂的查询还是json比较好用,官方的文档也都以json为主,只是在url中写json一时有点不适应。

有这么个需求,在translations字段中查询满足两个条件的结果并返回指定语言,这里用到了deep返回指定语言的内容,使用filter_or来执行查询。

其中tags数据是多个值,我们需要用包含_contains语法来完成,需要注意的是tags字段必须是csv数据格式,json是无法完成查询的,具体原因可参考上一篇文章

/items/articles?fields=*.*&deep[translations][_filter][languages_code][_eq]=en&filter={"_or":[{"translations":{"tags":{"_contains":"seo"}}},{"translations":{"tags":{"_contains":"JAMStack"}}}]}

再加上AND

/items/articles?fields=*.*&deep[translations][_filter][languages_code][_eq]=en&filter={"_and":[{"_or":[{"translations":{"title":{"_contains":"JAMStack"}}},{"translations":{"title":{"_contains":"seo"}}}]},{"id":{"_neq":2}}]}

语法说明

仅返回语言代码为en的数据

?deep[translations][_filter][languages_code][_eq]=en

返回tags为seo的数据

?filter={"translations":{"tags":{"_contains":"seo"}}}

返回tags为seo或JAMStack的数据

?filter={"_or":[{"translations":{"tags":{"_contains":"seo"}}},{"translations":{"tags":{"_contains":"JAMStack"}}}]}

用and查询同时满足多条件的数据

?filter={"_and":[{"tags":{"_contains":"seo"}},{"title":{"_eq":"seo"}}]}

Post Comment