mongodb如何实现同库联表查询方法
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍mongodb如何实现同库联表查询方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!注意:这里只对同库联表查询做介绍,跨库联表查询可能在之后也会介绍(因为公司架
千家信息网最后更新 2025年11月08日mongodb如何实现同库联表查询方法
这篇文章主要介绍mongodb如何实现同库联表查询方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
注意:这里只对同库联表查询做介绍,跨库联表查询可能在之后也会介绍(因为公司架构变动,之后可能会联表查询)
我用到的联表查询有两种,一种是mongoose的populate,一种是$lookup
一、populate
populate是使用外键关联子表
例如现在有一张订单表结构(动态外键):
var orderSchema = new mongoose.Schema({ uid: { type: String, required: true }, // 用户id amount: { type: Number, required: true }, oType: { type: Number, required: true }, // 订单类型 status: { type: Number, required: true }, // 订单的状态:1完成 2未完成 3失效})用户表:
var userSchema = new mongoose.Schema({ phone: String, status: String, createdAt: Date, updatedAt: Date})现在我想根据查询order表,并返回对应用户phone字段
order.find().populate({path: 'uid', model: User, select: '_id real_name phone bankcard'}).exec(function(err, order) { // order: { // uid: { // phone: '15626202254', // status: "expand", // createdAt: Date, // updatedAt: Date // }, // amount: 5000, // oType: 2, // 订单类型 // status: 1, // 订单的状态:1完成 2未完成 3失效 // }});这里order表的uid指向了user表的_id字段,当然也可以在新建表的时候定义外键,这里就不细说了
二、$lookup
lookup就是使用aggregate的$lookup属性,直接上官网例子非常好懂
orders表
{ "_id" : 1, "item" : "abc", "price" : 12, "quantity" : 2 }{ "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1 }{ "_id" : 3 }inventory表
{ "_id" : 1, "sku" : "abc", description: "product 1", "instock" : 120 }{ "_id" : 2, "sku" : "def", description: "product 2", "instock" : 80 }{ "_id" : 3, "sku" : "ijk", description: "product 3", "instock" : 60 }{ "_id" : 4, "sku" : "jkl", description: "product 4", "instock" : 70 }{ "_id" : 5, "sku": null, description: "Incomplete" }{ "_id" : 6 }db.orders.aggregate([ { $lookup: { from: "inventory", localField: "item", foreignField: "sku", as: "inventory_docs" } }])就是使用order的item字段作为inventory表的查询条件{sku: item},并赋值给inventory_docs字段,但值得注意的是两个字段的类型必须一样(3.5以上貌似可以转,没试过)
以上是"mongodb如何实现同库联表查询方法"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
查询
字段
订单
用户
类型
方法
内容
就是
状态
篇文章
两个
价值
例子
公司
兴趣
动态
小伙
小伙伴
属性
指向
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
政协委员谈网络安全审查
违章处理自助系统软件开发
数据库原子级别
数据库远程访问方法
网络安全工具写生素材
零基础了解软件开发
求生之路加入组还是没有刷服务器
阿里旅行网络安全事件
兰州市开明网络技术
大学生网络安全分类
mysql数据库购买
公司人员信息数据库含哪些内容
怎么配置多个数据库
数据库 预留字段
服务器冗余方案怎么写
软件开发不会做网线
果加智能怎么一直服务器异常
用服务器做订阅节点安全吗
安徽超频服务器出厂价
数据库网页版外键怎么写
龙芯3a服务器
kali网络安全攻防
局域网做服务器
c# 读取数据库表格
网络技术副总职责简述
服务器风扇降速
网络安全故障检讨
网络安全大赛比赛的顺序
公安部警察网络安全宣传周
深圳小鹅网络技术有限公司待遇