mongodb如何实现同库联表查询方法
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要介绍mongodb如何实现同库联表查询方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!注意:这里只对同库联表查询做介绍,跨库联表查询可能在之后也会介绍(因为公司架
千家信息网最后更新 2025年01月21日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安全错误
数据库的锁怎样保障安全
华为服务器的电源模块能热插拔吗
无棣软件开发初级教程
网络安全基地免费培训
择居网络技术
dhcp服务器主要功能是
可道云服务器收费标准
南宁网络安全审计6
北京收银软件开发公司
国外陌陌聊天软件开发客户
mc皮肤数据库地址变更
奉节网络安全审计系统咨询
防范网络安全诈骗培训目的
数据中心网络技术发展趋势
图书日常管理数据库
汇丰软件开发 cs待遇
守护网络安全构建和谐校园六年级
网络安全管理的主要功能
h2数据库支持sql查询吗
网络安全培训工作意义
windows怎么操作数据库
csgo怎么看服务器
软件开发技术毕业论文
仁怀网络安全系统有哪些
服务器限制了安卓邮箱登录
毕业加入科技企业还是互联网企业
您无权访问此服务器上的此页面
大学生网络安全保证书
无法验证此服务器
软件开发方法共同
完美平台服务器受vac保护么