mongodb多表关联查询的lookup性能以及语法是什么?
发布时间:2022-04-22 11:02:35 所属栏目:系统 来源:互联网
导读:文本主要给大家介绍mongodb多表关联查询中$lookup的功能以及语法,本文示例具有一定的借鉴价值,需要的朋友可以参考参考,下面就跟随小编一起来学习吧。 一. 聚合框架 聚合框架是MongoDB的高级查询语言,它允许我们通过转换和合并多个文档中的数据来生成新的
文本主要给大家介绍mongodb多表关联查询中$lookup的功能以及语法,本文示例具有一定的借鉴价值,需要的朋友可以参考参考,下面就跟随小编一起来学习吧。 一. 聚合框架 聚合框架是MongoDB的高级查询语言,它允许我们通过转换和合并多个文档中的数据来生成新的单个文档中不存在的信息。 聚合管道操作主要包含下面几个部分: 命令 功能描述 $project 指定输出文档里的字段. $match 选择要处理的文档,与fine()类似。 $limit 限制传递给下一步的文档数量。 $skip 跳过一定数量的文档。 $unwind 扩展数组,为每个数组入口生成一个输出文档。 $group 根据key来分组文档。 $sort 排序文档。 $geoNear 选择某个地理位置附近的的文档。 $out 把管道的结果写入某个集合。 $redact 控制特定数据的访问。 $lookup 多表关联(3.2版本新增) 在本篇幅中,我们聚焦$lookup的使用。 二. $lookup的功能及语法 1. 主要功能 是将每个输入待处理的文档,经过$lookup 阶段的处理,输出的新文档中会包含一个新生成的数组列(户名可根据需要命名新key的名字 )。数组列存放的数据 是 来自 被Join 集合的适配文档,如果没有,集合为空(即 为[ ]) 2. 基本语法 { $lookup: { from: <collection to join>, localField: <field from the input documents>, foreignField: <field from the documents of the "from" collection>, as: <output array field> } } 3. 语法的解释说明 语法值 解释说明 from 同一个数据库下等待被Join的集合。 localField 源集合中的match值,如果输入的集合中,某文档没有 localField 这个Key(Field),在处理的过程中,会默认为此文档含 有 localField:null的键值对。 foreignField 待Join的集合的match值,如果待Join的集合中,文档没有foreignField 值,在处理的过程中,会默认为此文档含有 foreignField:null的键值对。 as 为输出文档的新增值命名。如果输入的集合中已存在该值,则会覆盖掉, (注:null = null 此为真) 其语法功能类似于下面的伪SQL语句: SELECT *, <output array field> FROM collection WHERE <output array field> IN (SELECT * FROM <collection to join> WHERE <foreignField>= <collection.localField>); 三. 案例 以上的语法介绍有些枯燥,不易理解,我们直接分析品味案例好了。 此集合中的 sku 数据等同于 订单 集合中的 商品名称。在这种模式设计下,如果要查询订单表对应商品的库存情况,应如何写代码呢?很明显这需要两个集合Join。场景简单,不做赘述,直送答案 。 (编辑:济南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读