这篇文章主要介绍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实现关联查询的方法的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!