get和filter是model API中两个重要的函数,用于根据给出的条件获取或过滤符合要求的实例。这些条件必须写在一个query表里面,query表类似如下形式:
model_obj:filter { foo=bar, x=lt(1000), timestamp=gt(100000) }
filter返回一个query_set,即对象的一个特殊列表(此列表仍然可以调用Model的基本方法),而get仅仅返回一个(第一个)对象实例。
以下函数放在query表中使用。
相等判断
eq (cmp_obj) 返回true,如果相等;否则,返回false
cmp_obj: 待比较的对象
不相等判断
uneq (cmp_obj) 返回true,如果不相等;否则,返回false
cmp_obj: 待比较的对象
过滤出小于litmitation的部分
lt (limitation) 返回true,如果检查的目标用于比较的字段值小于limitation;否则,返回false
limitation: 数值。上限
过滤出大于litmitation的部分
gt (limitation) 返回true,如果检查的目标用于比较的字段值大于limitation;否则,返回false
limitation: 数值。下限
过滤出小于等于litmitation的部分
le (limitation) 返回true,如果检查的目标用于比较的字段值小于等于limitation;否则,返回false
limitation: 数值。上限
过滤出大于等于litmitation的部分
ge (limitation) 返回true,如果检查的目标用于比较的字段值大于等于limitation;否则,返回false
limitation: 数值。下限
过滤出界于small和big之间(开区间,不含边界)的部分
bt (small, big) 返回true,如果检查的目标用于比较的字段值在区间内;否则,返回false
small: 区间左边界
big: 区间右边界
过滤出界于small和big之间(闭区间,含边界)的部分
be (small, big) 返回true,如果检查的目标用于比较的字段值在区间内;否则,返回false
small: 区间左边界
big: 区间右边界
过滤出界于small和big之外(闭区间,含边界)的部分
outside (small, big) 返回true,如果检查的目标用于比较的字段值在区间外;否则,返回false
small: 区间左边界
big: 区间右边界
过滤出在待检字段中包含substr字符串的实例
contains (substr) 返回true,如果substr在待检字段中;否则,返回false
substr: 用于检验的字符串
过滤出在待检字段中以substr字符串开头的实例
startsWith (substr) 返回true,如果待检字段以substr开头;否则,返回false
substr: 用于检验的字符串
过滤出在待检字段中以substr字符串结尾的实例
endsWith (substr) 返回true,如果待检字段以substr结尾;否则,返回false
substr: 用于检验的字符串
过滤出待检字段在给定参数列表范围内的实例
inset (...) 返回true,如果待检字段在参数列表内;否则,返回false
...: 一个参数列表,相互之间用逗号隔开
过滤出待检字段不在给定参数列表范围内的实例
uninset (...) 返回true,如果待检字段不在参数列表内;否则,返回false
...: 一个参数列表,相互之间用逗号隔开
query参数表的与逻辑与或逻辑
query参数表的形式 model_obj:filter { x='a', y='b', z='c' },表中的各项之间是“与”逻辑的关系,用得最多的就是这种逻辑。但另一种逻辑——“或”逻辑,也是必不可少的。在bamboo中,目前还没实现一套完整的query逻辑表达式解释器,而是用了如下一种简单的方式来处理。
与逻辑:model_obj:filter { x='a', y='b', z='c' } 或 model_obj:filter {'and', x='a', y='b', z='c' } query中的各参数是与逻辑的关系。即检查的实例必须满足所有的条件后才被取出
或逻辑:model_obj:filter {'or', x='a', y='b', z='c' } query中的各参数是或逻辑的关系。即检查的实例只要满足一个条件就被取出
仅仅有这一点还只能处理一层逻辑关系,真正要做到高效处理(部分)多层逻辑关系,还得有下面的链式语法的支持
model_obj:filter(.....):filter(....) 意思是在过滤出的结果里面继续过滤,直到得到想要的数据集合
实现上述链式操作的基础在于query_set。query_set是一种特殊的对象列表,它虽然不是对象,却仍然可以调用Model的一些方法(需专门开放给query_set,针对query_set的情况做处理)。目前来讲,开放了filter和del两个函数给query_set用。
另一方面,query_set是List的实例,它仍然可以使用List类提供的各种方法。
分享到:
相关推荐
066TGp_bamboo_green_v2_2
Bamboo-CTL660系列产品Windows驱动PenTablet_5.3.3-2
安卓开发-AMap_Android_API_Demo_V2.0.4(Location_API_V1.0.2).zip
066TGp_bamboo_green_v2
JavaScript应用实例-AJ_api_search.js
GitHub Enterprise用户可以在Bamboo启动脚本中设置ATLASSIAN_BAMBOO_GITHUB_API_BASE_URL环境变量,以使GitHub存储库类型(和此插件)正常工作。 注意:确保Bamboo用来签出您的存储库的用户也具有写权限,否则它将...
JavaScript应用实例-AJ_api_search(1).js
这是Bamboo HR的非官方Python API。 到目前为止,它专注于管理员工信息,但是您几乎可以使用一个小python来做任何您想做的事情。 该库使用Python和的库进行测试。 非常感谢你们两个优秀的项目。 使用这个库非常...
使用SendInBlue API v2.0 安装 如果,则可以将软件包安装为: 添加bamboo_sendinblue到您的依赖项列表mix.exs : def deps do [{ :bamboo_sendinblue , " ~> 0.2.0 " }] end 在应用程序之前,请确保启动了...
python库,解压后可用。 资源全名:bamboo_ipa_sync-3.0.0-py2.py3-none-any.whl
JavaScript应用实例-sun_rise&set.js
竹-CI 使用 Atlassian 的 Bamboo CI 服务器上提供的 API 的简单库。用法 var Bamboo = require('bamboo-ci');var bamboo = new Bamboo('http://bamboo.mycompany.com', 'my', 'Password!');bamboo.getServerStatus()...
安装官方包,并申请到试用License之后,停止bamboo服务,将文件复制到atlassian/bamboo/atlassian-bamboo/WEB-INF/lib 覆盖同名文件,然后重启bamboo.仅供学习使用, 商业使用请购买授权
JavaScript应用实例-TheWolf_API.js
适用于Bamboo的AWS SES适配器 安装 该软件包可以通过添加安装bamboo_ses你在依赖列表mix.exs : def deps do [ { :bamboo_ses , " ~> 0.2.0 " } ] end 配置 更改邮件程序的配置: config :my_app , MyApp . ...
bamboo-agent-utility install ~ /bamboo 卸载Bamboo代理: bamboo-agent-utility uninstall ~ /bamboo 它能做什么? 安装Bamboo代理 如果您的Bamboo CI服务器托管在具有自签名SSL证书的内部服务器上,它将在本地...
Bamboo系列产品Windows驱动PenTablet_5.3.3-2 版本号:5.3.3-2 适应操作系统:Windows XP, Windows Vista, Windows 7, Windows 8 发布日期:2013/12/18 文件大小:37.1 MB 更多说明: 改进对Winodws 8.1的...
角色:竹剂 为特定的Atlassian Bamboo主服务器安装本地或远程Bamboo代理(节点)。要求您已经必须具有Atlassian Bamboo服务器,因为Bamboo代理依赖于该服务器。 在使用此角色之前,请确保您具有足够的许可证远程...
bamboo数位板驱动