加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 服务器 > 系统 > 正文

MongoDB中展开关联查询的前提是什么,SQL语句如何写

发布时间:2023-09-07 14:36:28 所属栏目:系统 来源:
导读:这篇文章主要讲解了“MongoDB中进行关联查询的前提是什么,SQL语句如何写”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟
这篇文章主要讲解了“MongoDB中进行关联查询的前提是什么,SQL语句如何写”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。
 
需求:把订单表(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,表示指定显示哪些字段。
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章