在上一节课中,我们分享了云开发命令中关于地理位置查询的相关 API,在今天的课程中,我们将介绍数据库查询命令中的大小比较的命令。
eq/neq
eq
和 neq
是用于对比某一个字段是否和所提供的数据相等/不相等。一般情况下,我们很少用 eq
,因为 eq
可以通过直接传入对象的值来进行查询,比如下面这段代码,就是判断 collection 中 _openid
是否和给定的 xxxx 相等。
db.collection('items').where({
_openid: 'xxxx'
}).get()
而 neq
则应用的比较多,举个例子,如果我们做了一个社区型小程序,我们可以借助于 neq
来实现查询除了自己以外的所有的帖子,这样我们的首页列表就可以只显示别人的内容,而不显示自己的内容,更加符合用户的习惯,在实现时,我们可以这样进行查询
const _ = db.command
db.collection('items').where({
_openid:_.neq('xxx')
}).get()
这样,我们就了解了基础的 eq
和 neq
的用法。
eq 命令和直接对比的区别
我们可以使用 eq 和 直接对比实现类似的效果。但是不同的是,如果我们之间对比,则只对比标记出来的属性,对于未标记出来的属性则不做对比。但是如果我们使用 eq ,则要求我们对比的字段和对应字段严格相等。
举个例子来说就是
{"id":1}
和{"id":1,"text":"abc"}
在使用条件{"id":1}
进行对比时,会有不同的表现。如果使用eq
命令,则只能查出前者。如果使用直接对比,则可以查出两条记录。
lt 与 lte & gt 与 gte
lt
和 lte
的区别是前者是对比特定字段小于所传入的值,而后者则是小于等于。而 gt
和 gte
则是大于和大于等于。
这四个命令都是用于比较大小,一般来说,可以用作范围的筛选,比如,评分高于 4.2 的店铺、评分低于 5 分的电影等等。
在使用时,也比较简单,我们只需要使用如下代码即可
const _ = db.command
db.collection('items').where({
progressscore _.gte(4.2)
})
.get()
总结
本次课程,我们介绍了云开发数据库命令中的 eq
、neq
、lt
、lte
、gt
、gte
命令,了解了这些命令的基本用法。明天,我们将介绍 in
、nin
和 exist
。