mongoDB如何实现关联查询?
2023-04-18 14:23:55 时间
需求:把订单表(PrepurchaseOrder)和用户表(User)通过邮箱(emaiL)进行关联,查找订单用户对应的钱包地址。
订单表结构如下:
{ "email" : "haifeng@163.com", "productName" : "中型2GPU矿机", }
用户表结构如下:
{ "email" : "15077550@qq.com", "neoWalletAddress" : "aabbccdd", }
最终的sql如下:
db['PrepurchaseOrder'].aggregate([{ $lookup:{ from:"User", localField:"email", foreignField: "email", as: "Users" }}, { $unwind: "$Users" }, { $match : { "Users.neoWalletAddress" : {$exists:true} }}, { $project: { productName: 1,count:1,email:1,"Users.neoWalletAddress":1}}, ])
sql解析:
1.from:"User" 表示从User表中去查
2.localField:"email",表示订单表(PrepurchaseOrder)中的邮箱。
3.foreignField: "email",表示用户表(User)中的邮箱。
4.as: "Users",表示把从User表中查询出的内容作为一个Users变量,附加到订单表(PrepurchaseOrder)
5.{ $unwind: "$Users" },表示把从User表中查询的数据字段,作为订单表(PrepurchaseOrder)中的字段
6. $match,表示进行值的匹配,匹配User表中钱包地址不为null的。
7. $project,表示指定显示哪些字段。
最终导出的数据如下图:
相关文章
- 可视化效果解读:将数据转成图形图像显示
- 大数据揭露就业趋势:互联网公司更符合个性
- 大数据时代的人才是怎么评判
- 大数据将怎样改写人才命运
- 大数据催生史学大变革
- 大数据概念:史上最全大数据解析
- 大数据时代:媒体新任务和媒体人的新角色
- 用大数据为互联网金融保驾护航
- 大数据时代下的社交网络
- 这才是真正的物流大数据挖掘思路!
- 数据人生的感悟:商业智能与商业分析区别
- IT系统分析师如何学习大数据
- 大数据时代 统计学依然是数据分析灵魂
- 大数据,小数据,哪道才是你的菜
- 通过统计工具做数据分析、优化和挖掘
- 面对全面启动的目标式攻击 用大数据打造安全防御新思维
- 传统数据分析与大数据分析融合
- 揭秘数据中心可视化管理:让IT可视
- 大数据时代如何提升挖掘能力
- 15种最佳方式帮你顺利掌握Hadoop技术