小程序云开发:联表查询去重及排序的不严谨笨办法
2021/10/28 1:39:50
本文主要是介绍小程序云开发:联表查询去重及排序的不严谨笨办法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
问题描述:
1、数据库查询去重,云开发没有distinct
2、数据库排序,联表查询用aggregate的情况下,不能用orderby()
3、lookup()情况下,如何取用as中嵌套的字段
4. 联表中两个表中有字段名相同('_openid'),且需要对其中一个添加match限制
问题解决:
1、用group()代替distinct
2、转用aggregate下的方法sort(),且应在project()中写相应设置,否则sort()会失效
3、摸索出来的,貌似没找到小程序文档里这么用的,能跑就大吉大利了
4、db.collection('表名')中对应哪个表,match中相应字段就指的是该表中的字段,不需要额外加条件区分
示例:
基本情况:联表查询两个表,forum表中 '_id' 字段对应f-reply表中 'forum_id' 字段,一条forum表的记录对应多条f-reply表的记录
需求:查出f-reply表中特定'openid' 对应forum表中的'_id','title'等字段
两表的内容:
代码:
const db=cloud.database({ env:"........" }) const $ = db.command.aggregatedb.collection('f-reply').aggregate().lookup({ from: "forum", localField:"forum_id", foreignField:"_id", as:"forum_info" }).match({ //此处_openid是f-reply表字段 _openid:event.openid }).project({ forum_id:1, forum_info:1, sendtime:1 //后面sort要用的字段,必须要在project中写明,否则排序失效 }).group({ _id:'$forum_id',//这里必须设置一个'_id',作为group中合并的列名 title:$.first('$forum_info.title'), replynum:$.first('$forum_info.replynum'),//粗暴解决,重复的title值都相同,所以直接取第一个 forumImg:$.first('$forum_info.forumImg') }).sort({ sendtime:-1 }).end()
参考资料:
去重:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/aggregation/aggregation.html
字段重名:https://developers.weixin.qq.com/community/develop/doc/0004a67ebc4ff8e4da9ae9a8056c00
总结:本文可能存在误导,总之,不要靠近云开发...
这篇关于小程序云开发:联表查询去重及排序的不严谨笨办法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-302024年最新版云开发cms开通步骤,开始开发微信小程序前的准备工作,认真看完奥!
- 2024-03-30微信小程序的网络设置,及网络请求:wx.request(OBJECT)
- 2024-01-22基于taro搭建小程序多项目框架
- 2024-01-13小程序开发:在插件市场寻找步骤条组件并二开
- 2024-01-05钉钉小程序生态—企业机器人加互动卡片,改善用户体验的开始!
- 2023-12-29【UniApp】-uni-app-打包成小程序
- 2023-12-26性能翻倍!京东亿级体量小程序优化实践
- 2023-12-25小程序优化:第三方SDK过大解决方案
- 2023-11-26微信小程序文件预览和下载-文件系统
- 2023-11-2652天学习微信小程序计划No.2:注册小程序账号&安装开发者工具