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,表示指定显示哪些字段。

最终导出的数据如下图:

p1.jpg

以上是 mongoDB如何实现关联查询? 的全部内容, 来源链接: utcz.com/z/538989.html

回到顶部