《微信小程序开发从入门到实战》学习三十八

4.2 云开发JSON数据库

4.2.9 条件查询与查询指令

在查询数据时,有时需要对查找的数据添加一些限定条件,只获取满足给定条件的数据,这样的查询称为条件查询。

可以在集合引用上使用where方法指定查询条件,再用get方法,即可只返回满足指定查询条件的记录。

如果想要获取某个用户的所有未完成的待办事项,可以使用以下代码:

db.collection('testOne').add({data:{done:false,myName:42}}) //添加未完成事项的记录

db.collection('testOne').add({data:{done:true,myName:43}}) //添加已完成事项记录的记录

db.collection('testOne').where({

_openid: 'user-open-id' , //指定用户的ID,大家换成自己的openid

done:false //指定未完成的事项

}).get().then(res=> {

console.log(res.data)

})

预览效果如下:

where方法接受一个对象参数,对象每个字段间的关系是"与"的关系,即需要同时满足这些匹配条件。在这个例子里,就是查询出_openid等于user-open-id且done等于false的记录。

想以"大于","小于",或是"数组中是否包含某元素"作为条件,可以使用查询指令构造出复杂的查询条件。查询指令时数据库API的函数,被封装在db.command对象。

例如,希望查询进度小于50%的待办事项,可以使用以下代码:

db.collection('testOne').add({data:{progress:49}})

db.collection('testOne').add({data:{progress:50}})

db.collection('testOne').add({data:{progress:51}})

db.collection('testOne').where({

progress: db.command.lt(50) //使用db.command.lt限定progress字段的值小于50的条件

}).get().then(res => {

console.log(res.data)

})

db.command()对象中提供的查询指令如下所示

eq 等于

neq 不等于

lt 小于

lte 小于或等于

gt 大于

gte 大于或等于

in 字段值在给定数组中

nin 字段值不在给定数组中

and 条件与 需同时满足满足另一个条件

or 条件或 满足任何一个条件即可

and和or是逻辑指令。需要对多个添加同时进行判断时可以使用。

用and逻辑指令查询进度在20%-80%的待办事项代码如下:

db.collection('testOne').add({data:{progress:21}})

db.collection('testOne').add({data:{progress:81}})

db.collection('testOne').where({

progress: db.command.gte(20).and(db.command.lte(80))

}).get().then(res => {

console.log(res.data)

})

用and做指令时,可以把它紧跟在其他查询指令后,可以传入另一个查询指令作为参数。

or指令也是一样的用法。

or指令可以对不同的字段进行条件查询,如查询询进度小于50%的待办事项或截止日期在今天之后的待办事项,代码如下:

var date1 = new Date()

db.collection('testOne').add({data:{progress:49,due:date1}})

date1.setDate(date1.getDate() + 1)

db.collection('testOne').add({data:{progress:50,due:date1}})

date1.setDate(date1.getDate() - 2)

db.collection('testOne').add({data:{progress:51,due:date1}})

db.collection('testOne').where(db.command.or({

progress:db.command.lt(50)

},{

due:db.command.lt(new Date())

})).get().then(res => {

console.log(res.data)

})

使用and指令也可以对不同的字段进行条件查询,但没必要。第一个示例获取某个用户的所有未完成的待办事项就是and的这个用法。

明天学查询数组和对象,再见。

相关推荐
Kingexpand_com12 小时前
企业车队运营痛点解析:传统人工模式如何实现数字化升级
小程序·app·软件开发·app定制开发·打车用车app·车队
小弥儿14 小时前
GitHub今日热榜 | 2026-09-18:腾讯双项目上榜
学习·开源
知识分享小能手16 小时前
深度学习学习教程,从入门到精通,深度生成模型 —— 知识点详解与代码实现(20)
人工智能·深度学习·学习
m4Rk_16 小时前
【论文阅读】Agent 记忆机制(74):CompassMem——从相似度检索走向事件图上的记忆导航
论文阅读·人工智能·学习·开源·github
小李不想当小白17 小时前
DMA直接存储器存取(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·分享
2601_9499506318 小时前
练题簿在线练题全流程:从资料导入到模拟考试与错题复盘
学习·考研·小程序·刷题·小程序推荐
别动我齐刘海19 小时前
ROS2 Jazzy + C++ 实战路线——基础学习2
c++·人工智能·vscode·python·学习·机器学习·机器人
投票竞赛20 小时前
线上投票海报生成教程,一键制作带小程序码投票海报
小程序
水云桐程序员21 小时前
量子力学概论,量子力学概念总结
笔记·科技·学习·量子计算
AI工具人PM产品经理21 小时前
零基础微信小程序入门:一个真实项目的里程碑路线图
微信小程序·云开发·学习路线·零基础入门·ai 编程