小編給大家分享一下MongoDB怎么實現(xiàn)關(guān)聯(lián)查詢,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
10年的岑鞏網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整岑鞏建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“岑鞏網(wǎng)站設(shè)計”,“岑鞏網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
需求:把訂單表(PrepurchaseOrder)和用戶表(User)通過郵箱(emaiL)進(jìn)行關(guān)聯(lián),查找訂單用戶對應(yīng)的錢包地址。
訂單表結(jié)構(gòu)如下:
{ "email" : "haifeng@163.com", "productName" : "中型2GPU礦機(jī)", }
用戶表結(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",表示用戶表(User)中的郵箱。
4.as: "Users",表示把從User表中查詢出的內(nèi)容作為一個Users變量,附加到訂單表(PrepurchaseOrder)
5.{ $unwind: "$Users" },表示把從User表中查詢的數(shù)據(jù)字段,作為訂單表(PrepurchaseOrder)中的字段
6. $match,表示進(jìn)行值的匹配,匹配User表中錢包地址不為null的。
7. $project,表示指定顯示哪些字段。
最終導(dǎo)出的數(shù)據(jù)如下圖:
以上是“mongoDB怎么實現(xiàn)關(guān)聯(lián)查詢”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!