支持端:小程序 , 云函数 , Web
因为努力和真诚,有更多的客户和我们聚集在一起,为了共同目标,创新互联在工作上密切配合,从创业型企业到如今不断成长,要感谢客户对我们的高要求,让我们敢于面对挑战,才有今天的进步与发展。从网站到小程序开发,软件开发,成都app软件开发公司,十余年企业网站建设服务经验,为企业提供网站设计,网站托管一条龙服务.为企业提供成都全网营销推广,按需开发网站,原创设计,十余年品质,值得您的信赖.
查询操作符,用于表示逻辑 "与" 的关系,表示需同时满足多个查询筛选条件
and 有两种使用情况:
此时需传入多个查询条件,表示需同时满足提供的多个完整查询条件
const _ = db.command
db.collection('todo').where(_.and([
{
progress: _.gt(50)
},
{
tags: 'cloud'
}
])).get()
但以上用 and 组成的查询条件是不必要的,因为传入的对象的各字段隐式组成了 “与” 的关系,上述条件等价于下方更简洁的写法:
const _ = db.command
db.collection('todo').where({
progress: _.gt(50),
tags: 'cloud'
}).get()
通常需要显示使用 and 是用在有跨字段或操作的时候,如以下表示 “progress 字段大于 50 或 tags 字段等于 cloud 或 tags 数组字段(如果 tags 是数组)中含有 cloud”:
const _ = db.command
db.collection('todo').where(_.and([
_.or({
progress: _.gt(50)
}),
_.or({
tags: 'cloud'
})
])).get()
需传入多个查询操作符或常量,表示字段需满足或匹配给定的条件。
如以下用前置写法的方式表示 "progress 字段值大于 50 且小于 100"
const _ = db.command
db.collection('todo').where({
progress: _.and(_.gt(50), _.lt(100))
})
还可以用后置写法的方式表示同样的条件:
const _ = db.command
db.collection('todo').where({
progress: _.gt(50).and(_.lt(100))
})
注意 Command 默认也可以直接链式调用其他 Command,默认表示多个 Command 的与操作,因此上述代码还可以精简为:
const _ = db.command
db.collection('todo').where({
progress: _.gt(50).lt(100)
})
方法接收两种传参方式,一是传入一个数组参数,二是传入多个参数,效果一样。
// 传入数组
function and(expressions: Expression[]): Command
// 传入多参数
function and(...expressions: Expression[]): Command
支持端:小程序 , 云函数 , Web
查询操作符,用于表示逻辑 "或" 的关系,表示需同时满足多个查询筛选条件。或指令有两种用法,一是可以进行字段值的 “或” 操作,二是也可以进行跨字段的 “或” 操作。
字段值的 “或” 操作指的是指定一个字段值为多个值之一即可。
如筛选出进度大于 80 或小于 20 的 todo:
流式写法:
const _ = db.command
db.collection('todo').where({
progress: _.gt(80).or(_.lt(20))
})
前置写法:
const _ = db.command
db.collection('todo').where({
progress: _.or(_.gt(80), _.lt(20))
})
前置写法也可接收一个数组:
const _ = db.command
db.collection('todo').where({
progress: _.or([_.gt(80), _.lt(20)])
})
跨字段的 “或” 操作指条件 “或”,相当于可以传入多个 where 语句,满足其中一个即可。
如筛选出进度大于 80 或已标为已完成的 todo:
const _ = db.command
db.collection('todo').where(_.or([
{
progress: _.gt(80)
},
{
done: true
}
]))
方法接收两种传参方式,一是传入一个数组参数,二是传入多个参数,效果一样。
// 传入数组
function or(expressions: Expression[]): Command
// 传入多参数
function or(...expressions: Expression[]): Command
支持端:小程序 2.8.3, 云函数 1.2.1, Web
查询操作符,用于表示逻辑 "非" 的关系,表示需不满足指定的条件。
如筛选出进度不等于100的 todo:
const _ = db.command
db.collection('todo').where({
progress: _.not(_.eq(100))
})
not 也可搭配其他逻辑指令使用,包括 and, or, nor, not,如 or:
const _ = db.command
db.collection('todo').where({
progress: _.not(_.or([_.lt(50), _.eq(100)]))
})
支持端:小程序 2.8.3, 云函数 1.2.1, Web
查询操作符,用于表示逻辑 "都不" 的关系,表示需不满足指定的所有条件。如果记录中没有对应的字段,则默认满足条件。
筛选出进度既不小于20又不大于80的 todo :
const _ = db.command
db.collection('todo').where({
progress: _.nor([_.lt(20), _.gt(80)])
})
以上同时会筛选出不存在 progress 字段的记录,如果要要求 progress 字段存在,可以用 exists 指令:
const _ = db.command
db.collection('todo').where({
progress: _.exists().nor([_.lt(20), _.gt(80)])
// 等价于以下非链式调用的写法:
// progress: _.exists().and(_.nor([_.lt(20), _.gt(80)]))
}).get()
筛选出 progress 不小于 20 且 tags 数组不包含 miniprogram 字符串的记录:
const _ = db.command
db.collection('todo').where(_.nor([{
progress: _.lt(20),
}, {
tags: 'miniprogram',
}])).get()
以上会筛选出满足以下条件之一的记录:
如果要求 progress 和 tags 字段存在,可以用 exists 指令:
const _ = db.command
db.collection('todo').where(
_.nor([{
progress: _.lt(20),
}, {
tags: 'miniprogram',
}])
.and({
progress: _.exists(true),
tags: _.exists(true),
})
)
方法接收两种传参方式,一是传入一个数组参数,二是传入多个参数,效果一样。
// 传入数组
function nor(expressions: Expression[]): Command
// 传入多参数
function nor(...expressions: Expression[]): Command
本文名称:创新互联小程序教程:SDK数据库Command·查询·逻辑操作符
新闻来源:http://www.shufengxianlan.com/qtweb/news18/299318.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联