MongoDB中进行关联查询的前提是什么,SQL语句如何写
Admin 2022-06-09 群英技术资讯 533 次浏览
需求:把订单表(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,表示指定显示哪些字段。
最终导出的数据如下图:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
mongodb中group by的使用:用db.collection.group({ key, reduce, initial[, keyf] [, cond] [, finalize] })实现分组。
mac环境下mongodb无法启动的原因:1、mongodb没有启动;2、没有db文件夹;3、因意外造成mongodb服务非正常关闭且造成mongodb服务无法正常启动;4、Permission denied。
count查询记录条数的方法:在mongodb数据库中使用“db.tablename.find().count();”命令即可查询记录数。
mac环境下mongodb启动失败的解决方法:1、随便进入一个文件夹;2、用mkdir创建mongo文件夹;3、用cd进入创建的文件夹;4、用mkdir在新创建的文件夹里面创建db文件夹;5、运行mongod,并且使用——dbpath。
mongodb去除重复数据的方法:进入mongo shell后切换到指定数据库,然后在循环代码中查找并使用db.test.remove方法删除重复数据即可。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008