云开发数据库命令之大小比较

464 阅读2分钟

在上一节课中,我们分享了云开发命令中关于地理位置查询的相关 API,在今天的课程中,我们将介绍数据库查询命令中的大小比较的命令。

eq/neq

eqneq 是用于对比某一个字段是否和所提供的数据相等/不相等。一般情况下,我们很少用 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()

这样,我们就了解了基础的 eqneq 的用法。

eq 命令和直接对比的区别

我们可以使用 eq 和 直接对比实现类似的效果。但是不同的是,如果我们之间对比,则只对比标记出来的属性,对于未标记出来的属性则不做对比。但是如果我们使用 eq ,则要求我们对比的字段和对应字段严格相等。

举个例子来说就是 {"id":1}{"id":1,"text":"abc"} 在使用条件 {"id":1}进行对比时,会有不同的表现。如果使用 eq 命令,则只能查出前者。如果使用直接对比,则可以查出两条记录。

lt 与 lte & gt 与 gte

ltlte 的区别是前者是对比特定字段小于所传入的值,而后者则是小于等于。而 gtgte 则是大于大于等于

这四个命令都是用于比较大小,一般来说,可以用作范围的筛选,比如,评分高于 4.2 的店铺评分低于 5 分的电影等等。

在使用时,也比较简单,我们只需要使用如下代码即可

const _ = db.command
db.collection('items').where({
  progressscore _.gte(4.2)
})
.get()

总结

本次课程,我们介绍了云开发数据库命令中的 eqneqltltegtgte命令,了解了这些命令的基本用法。明天,我们将介绍 inninexist