首页 > 编程语言 >小程序云开发联表查询

小程序云开发联表查询

时间:2023-03-20 13:45:30浏览次数:44  
标签:地点 程序 site 查询 类别 lookup 联表 集合 id

我现在有两个集合要联查
一个是类别(category),一个是地点(site)
一个类别下有很多个地点

那如果我要查出某个类别下有哪些类别怎么办?
联表查询官方文档

官方给出的方法是聚合查询和lookup函数
那我就用lookup函数来解决问题
lookup函数官方文档
官方给出两种方法
一种是相等匹配,就是两张集合里的两个字段的内容相同,进行匹配
一种是自定义连接条件、拼接子查询,如果有这方面要求的可以自己研究

那我用的是相等匹配

当然一脸懵也没事
直接看我的例子

一个类别下有很多个地点,查某个类别下的所有类别怎么写呢?
我的集合结构如下

(我设计的思路还是按照传统关系型数据来设计的,当然这样也没有关系)

我设计的两张集合中
类别集合有c_i字段,地点集合也有c_id字段,这个字段表示的是类别的序号,即某个地点属于哪一个类别。
既然两张集合有可以联立的字段(这两个字段名称不一定要相同,我只是为了方便写成一样的了)
那就可以用lookup来实现了

// 云函数入口函数
exports.main = async (event, context) => {
    return await db.collection('category').aggregate()
        .lookup({
            from: 'site',
            localField: 'c_id',
            foreignField: 'c_id',
            as: 'site_list',
        })
        .end()
}

但我写的代码是啥意思呢?

db.collection('category').aggregate()
这行应该很好理解,就是对类别集合进行聚合操作(aggregate是聚合,lookup就是aggregate的一个方法)

lookup({})
就是调用这个函数,那里面的四个参数又是啥意思呢?

            from: 'site',
            localField: 'c_id',
            foreignField: 'c_id',
            as: 'site_list',

from的参数可以理解为 要连接的那张集合(我要查类别下的地点,当然是和地点集合做连接啦,所以是from: 'site')

localField的参数可以理解为 当前集合(类别集合)的要和连接的那个集合(就是地点集合啦)进行连接的字段,也可以理解为当前集合的外键(就是类别表里的c_id字段啦)

foreignField的参数可以理解为 和上面的差不多,就是要连接的那个集合(就是地点集合)的进行连接的字段(外键),就是地点集合里的c_id字段啦

as的参数可以理解为 结果作为一个数组形式输出,那个数组的名字(这里就是把那个输出结果的数组命名为site_list了)

最后把返回来的结果中的site_list取出来用就行啦

标签:地点,程序,site,查询,类别,lookup,联表,集合,id
From: https://www.cnblogs.com/talmudmaster/p/17235939.html

相关文章

  • 四、第一个opengl的qt程序
    原链接1、QOpenGLWidget:不需要GLFWQOpenGLWdiget提供了三个便捷的虚函数,可以重载,用来重新实现典型的OpenGL任务:.panitGL:渲染OpenGL场景。widget需要更新时调用。.resiz......
  • 关于微信小程序的boundingClientRect用法
    微信小程序提供了wx.createSelectorQuery接口,用于获取WXML节点信息。其中,boundingClientRect方法可以获取某个节点的布局位置和尺寸信息。boundingClientRect方法接......
  • orcle 查询出来的是空集给默认值的方法
    经常会遇到这种情景,查询语句必须要有一个返回值,但是现在的查询条件没有符合的结果。今天遇到了这个问题,解决方法:查询时用casewhen 这种方式selectcase(selectcount......
  • EmployeeController类的分页查询page方法
    @GetMapping("/page")publicR<Page>page(intpage,intpageSize,Stringname){log.info("page={},pageSize={},name={}",page,pageSize,name);//构造分页......
  • EmployeeController类的根据id查询员工信息getById方法
    @GetMapping("/{id}")publicR<Employee>getById(@PathVariableLongid){log.info("根据id查询员工信息。。。");Employeeemployee=employeeService.getById......
  • 悬赏任务app源码(uniapp小程序源码)成品平台搭建及开发
    悬赏任务app源码,从名字本身就可以理解这个PHP项目的流程。通过在线管理员工任务。即使它也可以在Intranet中工作。MySQL数据库是此源代码的最终部分。它易于实施和遵循。它......
  • ElasticSearch 实现分词全文检索 - 高亮查询
    目录ElasticSearch实现分词全文检索-概述ElasticSearch实现分词全文检索-ES、Kibana、IK安装ElasticSearch实现分词全文检索-Restful基本操作ElasticSearch......
  • #yyds干货盘点# LeetCode程序员面试金典:BiNode
    题目:二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点)。实现一个方法,把二叉搜索树转换为单向链表,要求依然符合二叉搜索树的性质,转换操作应是原......
  • 保龄球计分程序
        计算每轮单独得分,十轮累加得总分。每轮单独得分,按规则可以大致总结出,如果议论中首次全中或者两次补中,则相当于第一次滚球后连续加后面两次;否则,只加后面一次。......
  • d音团购码卷核销下单配送小程序开发
    d音团购码卷核销下单配送小程序开发系统介绍:在d音流量池加持下,d音团购日益火爆,但以往顾客购买d音团购券,只能到店核销,成交周期被大大延长,导致退款率居高不下。为实现d音团购......