溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

mongoDB實(shí)現(xiàn)關(guān)聯(lián)查詢(xún)的方法

發(fā)布時(shí)間:2020-07-07 15:21:22 來(lái)源:億速云 閱讀:136 作者:清晨 欄目:編程語(yǔ)言

這篇文章主要介紹mongoDB實(shí)現(xiàn)關(guān)聯(lián)查詢(xún)的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

需求:把訂單表(PrepurchaseOrder)和用戶(hù)表(User)通過(guò)郵箱(emaiL)進(jìn)行關(guān)聯(lián),查找訂單用戶(hù)對(duì)應(yīng)的錢(qián)包地址。

訂單表結(jié)構(gòu)如下:

{ 
    "email" : "haifeng@163.com", 
    "productName" : "中型2GPU礦機(jī)", 
}

用戶(hù)表結(jié)構(gòu)如下:

{ 
    "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",表示用戶(hù)表(User)中的郵箱。

4.as: "Users",表示把從User表中查詢(xún)出的內(nèi)容作為一個(gè)Users變量,附加到訂單表(PrepurchaseOrder)

5.{ $unwind: "$Users" },表示把從User表中查詢(xún)的數(shù)據(jù)字段,作為訂單表(PrepurchaseOrder)中的字段

6. $match,表示進(jìn)行值的匹配,匹配User表中錢(qián)包地址不為null的。

7. $project,表示指定顯示哪些字段。

最終導(dǎo)出的數(shù)據(jù)如下圖:

mongoDB實(shí)現(xiàn)關(guān)聯(lián)查詢(xún)的方法

以上是mongoDB實(shí)現(xiàn)關(guān)聯(lián)查詢(xún)的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI