- 小程序里webview打开的H5页面怎么清除缓存?
微信小程序H5页面一直是旧的版本,如何能快速的清除webView缓存呢?不让运维处理的话
2020-07-27 - 【笔记】云开发中的聚合aggregate和数据查询get简单对比
背景 在我开发在线答题小程序的过程中,会经常使用到聚合aggregate和数据查询get,比如从题库抽题、付费解锁、排行榜等。 聚合aggregate和数据查询get时不同的两套体系,聚合更偏向于数据的统计分析。 由于聚合和数据查询都能对数据库进行查询,而且两个的很多方法都特别类似,所以我刚开始的时候会混淆,甚至错误的混用,比如会在aggregate()加where条件、get请求,这里为了让自己更好理解,特整理一下两个的对比,我在写数据库查询和聚合时都会先写类似以下的模板。 普通数据查询 const db = wx.cloud.database() //获取数据库的引用 const _ = db.command //获取数据库查询及更新指令 db.collection("question") //获取集合china的引用 .where({ //查询的条件指令where create_time: _.gt(1598580712652) //查询筛选条件,gt表示字段需大于指定值。 }) .field({ //显示哪些字段 _id:false, //默认显示_id,这个隐藏 subject: true, answer: true, options:true }) .orderBy('create_time', 'desc') //排序方式,降序排列 .skip(0) //跳过多少个记录(常用于分页),0表示这里不跳过 .limit(10) //限制显示多少条记录,这里为10 .get() //获取根据查询条件筛选后的集合数据 .then(res => { console.log(res.data) }) .catch(err => { console.error(err) }) 聚合查询 const db = wx.cloud.database() const _ = db.command const $ = db.command.aggregate db.collection('china').aggregate() .match({ //类似于where,对记录进行筛选 price: $.gt(3000) }) .project({ //类似于field }) .sort({ //类似于orderBy age: -1, score: -1 }) .skip(5) //类似于skip .limit(2) //类似于limit .end() .then(res => console.log(res)) .catch(err => console.error(err)) 总结 match是根据条件过滤文档,进行的是查询匹配,语法和where比较类似,在写聚合时,应尽可能的把match放在流水线的前面。match内可以写db.command查询操作符 [代码]_[代码] 和聚合操作符db.command.aggregate [代码]$[代码],但是除了match阶段,在其他聚合阶段中传入的对象可使用的操作符都是聚合操作符;project 把指定的字段传递给下一个流水线,指定的字段可以是某个已经存在的字段,也可以是计算出来的新字段,它和field不同的是可以新增一些不存在的字段(只是显示用,也没写进数据库);sort 根据指定的字段,对输入的文档进行排序。<排序规则>可以是以下取值:1 代表升序排列(从小到大);-1 代表降序排列(从大到小);功能和orderBy类似;小程序端 limit 默认 20,也就是如果你使用聚合查询,你查询到的数据都会默认显示20条数据,但是你可以设置更多,而普通查询是不能超过20条的。
2020-08-28