意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

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

来源:恒创科技 编辑:恒创科技编辑部
2023-12-02 05:17:59
这篇文章主要讲解了“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,表示指定显示哪些字段。

最终导出的数据如下图:


以上就是关于“MongoDB中进行关联查询的前提是什么,SQL语句如何写”的介绍了,感谢各位的阅读,如果大家想要了解更多相关的内容,欢迎关注恒创科技,小编每天都会为大家更新不同的知识。
上一篇: mysql直接拷贝data目录下数据库源文件还原数据库方法 下一篇: JavaScript单线程和任务队列是什么