温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mongoDB怎么实现关联查询

发布时间:2021-03-04 11:15:04 来源:亿速云 阅读:398 作者:小新 栏目:编程语言

小编给大家分享一下mongoDB怎么实现关联查询,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

需求:把订单表(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怎么实现关联查询

以上是“mongoDB怎么实现关联查询”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI