IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 小程序云开发联表(3表以上)+分页+筛选指定字段 -> 正文阅读

[移动开发]小程序云开发联表(3表以上)+分页+筛选指定字段

报名记录表结构

产品表结构

用户表结构

?关联关系:

目标:查询工号为122员工的客户报名记录

关系:

  1. 客户报名记录表的product_id关联产品表的_id -> 获取该客户的报名产品
  2. 客户报名记录表的opid关联用户表的opid ->获取该客户的个人信息
  3. 这样可以获取所有客户的报名记录,接下来筛选工号为122员工的客户报名记录
    1. 筛选:客户报名记录表的employee_id 等于?用户表的?employee_id

注意:分页查询需要在sort后再分页,不然聚合后不行,且sort排序的字段最好唯一

分页说明:skip跳至多少条,limit限制显示多少条

  1. 第一页skip是0*10,limit是10
  2. 第二页skip是1*10, limit是10
  3. 那么skip参数为-> skip(pageSize*page),page首次传0
  4. limit传入10

具体代码:

//查询客户报名记录
  exports.queryUserRecords = async function (event, cloud) {
    const db = cloud.database()
    const _ = db.command
    const $ = _.aggregate
    let pageSize = 10;
    let page = (parseInt(event.page)-1) * pageSize
    return await db.collection('sign_records') 
      .aggregate() //可进行联表查询,返回联表查询对象
      .lookup({ // 关联查询 left join
        from: 'products', //要关联的表products
        // localField: 'product_id', //sign_records表中的关联字段
        // foreignField: '_id', //products表中关联字段
        let: {
          product_id: '$product_id', // 主表的product_id
        },
        pipeline: $.pipeline()
          .match(_.expr($.and([
            $.eq(['$_id', '$$product_id'])
          ]))) //主表的产品id与当前表的_id比较
          .project({ //不显示当前指定字段
            opid: 0,
            product_type: 0,
            status: 0,
            unionid: 0,
            urls: 0
          })
          .done(),
        as: 'productlist' //定义输出数组的别名
      })
      .lookup({ // 关联查询 left join
        from: 'users', //要关联的表user
        // localField: 'opid', //sign_records表中的关联字段
        // foreignField: 'opid', //user表中关联字段
        let: {
          s_opid: '$opid'// 主表的opid
        },
        pipeline: $.pipeline()
          .match(_.expr($.and([
            $.eq(['$opid', '$$s_opid']) 
          ]))) //主表的opid与当前表的opid比较
          .project({ //不显示当前指定字段
            address_info: 0,
            avatar_url: 0,
            create_at: 0,
            password: 0,
            unionid: 0,
            update_at: 0,
            user_type: 0
          })
          .done(),
        as: 'userlist' //定义输出数组的别名
      })
      .project({ //不显示部分
        update_at: 0, //管理员更新记录时间
        signtime: 0, //签到时间
        starttime: 0, // 开始签到时间  
      })
      .match({
        'employee_id': event.employee_id
      })
      .sort({'create_at':-1,'opid':-1}) // 不排序没办法分页  
      .skip(event.page*pageSize) 
      .limit(pageSize) 
      .end()
  }

查询结果:

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 13:09:42  更:2021-10-29 13:11:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:29:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码