微信小程序 三表联合查询 lookup pipeline project

小程序中的多表联合查询 要想在低码中实现表和表之间的关联查询,需要使用aggregate聚合的语法,聚合语法也有本表和需要连接的表,官方文档里使用了lookup进行表关联lookup({from,localField,,as})具体的参数说明参数字段说明from要进行连接的另外一个集合的名字localField光看文档解释可能还不是特别明白,我们需要具体实践一下httpshttps。... 阅读详情

微信小程序使用lookup进行多表联合,有两种方式

方式1:

将输入记录(输入记录:就是源数据表集合)的一个字段和被连接集合的一个字段进行相等匹配时,采用以下定义:

lookup({
  from: <要连接的集合名>,
  localField: <输入记录的要进行相等匹配的字段>,
  foreignField: <被连接集合的要进行相等匹配的字段>,
  as: <输出的数组字段名>
})

看官方文档案例即可。

方式2: 

如果需要指定除相等匹配之外的连接条件,或指定多个相等匹配条件,或需要拼接被连接集合的子查询结果,那可以使用如下定义:

lookup({
  from: <要连接的集合名>,
  let: { <变量1>: <表达式1>, ..., <变量n>: <表达式n> },
  pipeline: [ <在要连接的集合上进行的流水线操作> ],
  as: <输出的数组字段名>
})

(下面的案例 筛选子结果需要保留的字段)  

// 云函数入口文件
const cloud = require('wx-server-sdk');
const db = cloud.database();
const _ =db.command;
const $ = _.aggregate;
//初始化
cloud.init({
  env:cloud.DYNAMIC_CURRENT_ENV
})

exports.main = async(event,context)=>{      
      return new Promise((resolve,reject)=>{//采用await的方式,会返回result null,不解
        db.collection('cloudOrder').aggregate().lookup({
          from:'cloudUserInfo',//要联合的表
          let:{//如果下方的pipeline中需要用到输入记录(即cloudOrder表)中的变量,必须在let中定义
            order_openid:'$_openid'//此处的_openid为cloudOrder中的字段
          },
          pipeline:$.pipeline().match(_.expr($.eq(['$_openid','$$order_openid'])))
//pipeline指定要在被连接集合中运行的聚合操作,即对联合的表cloudUserInfo进行聚合操作;match为过滤操作;_.expr为执行表达式命令;$.eq(['元素1','元素2'])聚合比较运算表达式,返回值为true/false,对元素1和元素2进行相等判断;$_openid为要联合的表cloudUserInfo中的字段,$$order_openid为let中定义的变量
          .project({
            _id:0,
            avatarUrl:1
          }).done(),//project为指定连接集合中需要保留或删除的字段,_id不显示,只显示avatarUrl;done()为pipeline操作结束
          as:'userInfo'//返回的结果集,userInfo:[{avatarUrl:'***'}]
        })
        .lookup({
        from:'cloudUserInfo',
        let:{
          order_acceptOpenid:'$acceptOpenid'
        },
        pipeline:$.pipeline().match(_.expr($.eq(['$_openid','$$order_acceptOpenid']))).project({
          _id:0,
          acceptAvatar:'$avatarUrl',
          acceptNickName:'$nickName',
          acceptPhone:'$phone'
        }).done(),
        as:'acceptInfo'
      })
      .replaceRoot({
        newRoot:$.mergeObjects([ $.arrayElemAt(['$userInfo',0]),$.arrayElemAt(['$acceptInfo',0]),'$$ROOT'])
      }).project({
        userInfo:0,
        acceptInfo:0
      })
        .sort({'publicTime':1}).end().then(res=>{
          resolve({status:"success",msg:res})
        }).catch(err=>{
          reject({status:"fail",msg:err})
        })
       
      }) 
  }

微信小程序云开发多表联查 立即下载

相关推荐

基于Simulink的前馈解耦SVPWM整流器仿真

本文提出了一种基于Simulink的前馈解耦SVPWM整流器仿真方案,针对传统双闭环控制存在的耦合严重、电压利用率低等问题进行优化。通过前馈补偿dq轴耦合项(ωLiq和ωLid)结合SVPWM调制算法,实现了电流跟踪误差<3%、电压利用率达0.99、THD<3%的性能指标。文章详细阐述了系统架构设计,包括前馈解耦原理推导、SVPWM算法实现步骤,并提供了完整的Simulink建模方法。仿真结果表明,该方案在动态响应速度(25ms)和直流电压纹波(1.1%)方面显著优于传统SPWM控制。同时给出了

MHD0815的博客 162

微信小程序云开发(云数据库、云函数)的多表联查

今天在写一个微信小程序demo,用的是云开发,是一个实验室预约的一个流程。一开始写的很开心,毕竟用java ssm+mysql简单的一笔。心里想着云数据库不也差不多嘛。但是后来发现差距蛮大的,不过还好,只要熟练数据库,对于这个还是看看API文档还是能够轻松上手的。但是貌似度娘以及小程序云开发社区对于这个多表联查的具体使用几乎没有,API文档其实对于新手而言难度还是比较大的,也很难找到教学,所以我这里讲解一下。废话不多说,上代码。 我总共有三个表:用户表,实验室表,审批表 用户表的数据是这样...

mygia的专栏 1万+

告别SendKeys!用DD驱动级模拟在Windows 10/11上实现真·后台键鼠操作(Python实战)

本文详细介绍了如何使用DD驱动级模拟技术在Windows 10/11上实现真后台键鼠操作,解决传统方法如pyautogui和SendKeys的局限性。通过Python实战案例,展示了驱动级模拟在游戏自动化、RPA等场景中的高效应用,包括环境配置、核心API解析及高级优化技巧。

weixin_42519985的博客 798

【记一次微信小程序云开发联表聚合查询,包括表联接、分组统计等实现】

以步数排行榜为例,实现微信小程序开发云函数多表联接,分组聚合,分组统计,分组求和,聚合查询。

搬砖人 2182

SUMO使用教程(一)

本人的sumo视频入门课程,希望支持哦。https://edu.youkuaiyun.com/course/detail/25834 SUMO是一款交通仿真软件,其余可自行百度。教程一主要展示一下如何运行一个仿真实例。当然,这只是实现方法中的一种。 准备: 1.SUMO软件 2.osm地图文件 SUMO可去官网下载,解压后就可以使用,图形界面软是在解压后bin文件夹下的sumo-gui.exe。...

lyx的专栏 3万+

Python与Wind量化接口实战:从配置到数据提取全流程解析

本文详细解析了Python与Wind量化接口的实战应用,从环境配置到数据提取全流程。通过Anaconda管理Python环境,安装WindPy接口,实现历史行情、截面数据和实时行情的查询与优化。文章还提供了高级功能如批量查询、数据缓存策略及实战案例,帮助开发者高效构建量化分析框架。

omega的博客 1327

小程序云开发如何多表联查三表联查?

两表联查 // 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() // 云函数入口函数 exports.main = async (e, context) => { const { id } = e // 定义联表实例 const data = await db.collection('lottery') .aggregate() .ma

前端博客 5152

36、真核生物RNA PolII启动子预测相关研究

本文综述了真核生物RNA聚合酶II启动子预测的研究进展,涵盖转录调控机制、核心启动子元件(如TATA框、INR、GC框)、转录因子结合位点预测的挑战与方法。介绍了基于权重矩阵、神经网络和隐马尔可夫模型等多种启动子预测算法,并探讨了启动子分类策略及评分加权方法。通过Hertz-Stormo-Hartzell流程和基因微阵列分析实例,展示了如何识别保守调控序列。文章还总结了当前预测技术的局限性,提出了整合多组学数据、开发深度学习模型、加强实验验证等未来研究方向,旨在提升启动子识别的准确性与生物学意义。

palm99的专栏 187

微信小程序 lookup 联表查询

微信小程序 云开发 store 商品集合 _id: 'a8831daa5fef02f50153146e5902c2aa', openid: 'oMlDj5JiYiwxyBJm-d4JFY-Ov-LM', // 发布商品者 openid title: '小米手电筒', liulan: 29, price: 19.9, imgUrl: 'xxxxxxxxxxxxxxxx', time: 1609499381638, shenhe: true, fav 收藏集合 _id: 'b45a21d55ff15

终日而思不如须臾所学。 4789

飞书接入OpenClaw:从零到一的保姆级图文教程

本文主要介绍了飞书接入OpenClaw:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 解决方案 2.1 步骤一:安装插件 2.2 步骤二:创建机器人应用 2.3 步骤三:测试 3. 注意事项

weixin_43178406的博客 13万+

多思计组实验实验三、存储器读写实验

实验三、存储器读写实验

qq_53089329的博客 3651

微信小程序云开发联表查询,详细用法,防踩坑

最近在用云开发开发小程序时遇到了很多的小问题,其中最让我烦恼的就是数据的冗余。 最初设计的时候为了减少读取数据的次数将数据库的每个集合做了很多冗余,为了一次读取就能获得全部渲染的数据,但后来发现这样方式会导致每次获取的数据量过多而云函数报错。 所以我的解决方法就是 1.将各个数据表间尽量只用一个字段连接 2.每次获取数据使用小程序云开发提供的lookup函数来联表查询 官方的联表查询我也看了很久才理解,其实大部分的时间都是一些小错误,导致一直出不来结果,接下来我就用简单的方式讲一下微信小程序的lookup联

weixin_47077674的博客 1万+

破解现代反爬虫:JS加密、OB混淆与CSS反爬的实战攻防分析

摘要: 随着反爬技术的升级,JS加密、OB混淆和CSS反爬成为主流防护手段,阻碍传统爬虫获取数据。本文解析了这些技术的工作原理,并提出破解策略:通过模拟浏览器(如Selenium、Puppeteer)执行动态JS,逆向混淆代码,以及利用开发者工具突破CSS隐藏。针对复杂防护,开发者需结合技术分析与工具应用,如API接口抓取、动态渲染破解等,以应对不断演进的反爬机制。未来,爬虫攻防将持续升级,需保持技术敏锐性。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1644

Mongo lookup 二级检索pipeline用法

为二级查询条件,其中必须由。定义关联及其表达式,

kadxls的博客 774

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

MongoDB Aggregation Pipeline Stages

Stage Description $addFields Adds new fields to documents. Similar to $project, addFieldsreshapeseachdocumentinthestream;specifically,byaddingnewfieldstooutputdocumentsthatcontainboththeexisti...

Claroja 751

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

小程序云开发联表数据查询以及云函数中的应用

文章目录1、联表查询(1)lookup联接两个表格(2)使用match进行条件查询(3)直接返回学生成绩平均值(4)只显示teacher和score这两个值2、在云函数中的应用(1)在云数据库中添加数据(2)创建云函数并初始化数据库(3)编辑云函数入口函数(3)上传部署云函数 大家好,我是宁一,今天我们来学习云开发联表数据的查询,并教大家如何在云函数中应用,在微信开发者工具中打印出我们查询的结果 先来设定一下场景,现在有两个表格,我们来查询一下徐老师所带的班级里面所有学生的平均成绩 1、联表查询 先看一下

腾讯云云开发布道师,慕课网合作讲师 5203

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

个人技术总结——微信云开发数据库多表连接查询的技术

很遗憾,在准备篇指定的学习路线,在这一段时间里因为其他课程安排较满以及考取研究生等种种事项没能如期学习。但是在软件工程实践这门课程里,我为了完成课程的任务,努力去学习了自己之前没有学过,没有尝试过的技术与框架:Vue3前端框架java SpringBoot后端框架maven工具使用Gsonformat解析json文件fastjson解析处理json数据微信小程序原生开发与云开发项目部署服务器(nginx管理代理,axios网络请求访问,java SpringBoot注解)

selfsuki的博客 1599

小程序云开发多表查询

原文链接:https://juejin.im/post/5baadb086fb9a05ce2740968 关联表学习 文中代码并不是实际代码,伪代码不可直接运行。 功能:用户 喜欢 文章 表 用户表(users) id username 唯一标识,没有登录的可直接使用 _openid 用户名 文章表(articles) id tit...

luckyboy101的专栏 1万+

微信小程序查询云数据库表的多个数据

循环是两次了,但得到的数据都是基于最后一个数据来查询的,就是查询不准确,但又不想设置延时器,等这个查询完再执行下一个,就看到下面这个的提示,就意识到不能循环体来执行。就想着能不能一次把列表里的数据查阅完,借助chatgpt知道了有map这个方法,来一次查询,然后得到了正确的结果。

weixin_52908190的博客 672

微信云开发联表查询 表1与表2关联 表2与表3关联

业务逻辑 实现转盘抽奖游戏 需求数据 1.转盘抽奖表 2.转盘奖品对用的卡券表 3.卡券对应的卡券档案表 三表关系 抽奖表的 cardid(卡券ID) 等于 卡券表的(id) ,卡券表的(daid) 等于 卡券档案的主键ID 废话不多啥上代码, 思路:通过 Aggregate.replaceRoot函数把子表数据先转换成主表数据在和后面表做对比 db.collection('chou_jiang').aggregate() .lookup({ from: 'card', localFi

weixin_45427064的博客 1122

【uniapp-临时联表查询】SYNTAX_ERROR, 未找到主表与副表之间的关联关系,注意使用临时表联表查询时只会使用过滤后的字段进行联表

联表查询时,必须前后呼应。另外,要改改显示字段:(schema2code生成代码,要记得所有有关的页面都要去改改。

许多仙的博客 1548

小程序云函数用pipeline的project筛选联表字段

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境。return await db.collection('主表a').aggregate()$.eq(['$b的ID, '$$a的ID']) //关联匹配。as: 'binfo' // 随便你喜欢的名字,存放筛选出b表的字段。b表字段x: 0 //0为隐藏,1为显示,b表字段y: 0 //0为隐藏,1为显示。a的ID: '$a的ID', // 主表的。// 云函数入口函数。

frankmail的博客 641

MongoDB系列:管道操作:聚合阶段操作符(二)

本节只编写了个人认为可能用到的操作符,详细更多的操作符以及使用注意事项请前往。

zhengguofeng0328的博客 1736

微信小程序云开发联表查询【聚合】

lookup联表查询

qq_51201910的博客 1535

小程序云开发lookup联表查询右表添加查询条件

all_course

xeswzb的博客 2110
上一篇: 小程序实例 需要异步返回数据,否则返回的数据为null
下一篇: 微信小程序 下拉刷新 上拉触底分页
少杰()
博客等级 码龄4年 18粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少杰()

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值