MongoDB聚合查詢(xún)中的lookup、match、size操作詳解
時(shí)間:2026-05-04 23:10:22MongoDB聚合查詢(xún)中的合查$lookup(′ω`*)、$match和$size操作符是詢(xún)中詳解用于處理數據關(guān)聯(lián)和過(guò)濾的關(guān)鍵工具,這些操作符通常用在聚合管道中,操作以實(shí)現復雜的合查數據處理任務(wù)。
$loo(′▽?zhuān)?kup(關(guān)聯(lián)查詢(xún))
$lookup操作符用于執行左外連接來(lái)合并來(lái)自集合或數組的操作數據,它允許你根據某些條件將一個(gè)集(ji)合的合查文檔與另一個(gè)集合的文檔相關(guān)聯(lián)。
語(yǔ)法:
{ $lookup: { from: <collection to join>,詢(xún)中詳解 localField: <field from the inp??ut documents>, foreignField: <field from the documents of the "from" collection??>, as: <outpu(′▽?zhuān)?t array field to add to the input documents> }}示例:
假設有兩個(gè)集合,一個(gè)是操作訂??單集合orders,另一個(gè)是合查用戶(hù)集合users,現在你想關(guān)聯(lián)這兩個(gè)集合以獲取(qu)每個(gè)訂單的詢(xún)中詳解用戶(hù)信息。
db.orders.aggregate([ { $lookup: { from: "users",操作 localField: "user_id", foreignField: "_id", as: "user_info" } }])$match(過(guò)濾)
$match操作符用于篩選符合特定(ding)條件的文檔,它可以在任何聚合管道階段使用,合查但通常放在管道的詢(xún)中詳解開(kāi)始位置以提高效率。
語(yǔ)法(′ω`*):
{ $match: { <query> // 查詢(xún)條件 }}示例:
在上( ?▽?)面的操作關(guān)聯(lián)查詢(xún)結果中,你可能只想看到金(╬ ò﹏ó)額大于100的訂單。
db.orders.aggre??gate([ { $lookup: { from: "users", localField: "use??r_id&qu(′?`)ot;, foreignField: "_id", as: "user_info" } }, { $match: { "amount&quo??t;: { $gt: 100 } } }])$size(數組大?。?/p>
$size操作符用于返回數組字段的長(cháng)度,它(ta)常常與$group和$project一起使用,以提供有關(guān)數組大小的信息。
語(yǔ)法:
{ $size: <array field>}示例:
如果你想計算每個(gè)用戶(hù)的訂單(′ω`*)數量,可以使用$size操作符。
db.users.aggregate([ { $lookup: { from: "or(′;д;`)ders&(╥_╥)quot;, localField: "_id", foreig(′Д` )nField: "user_id",┐(′д`)┌ as: "user_ヽ(′?`)ノorders" } }, { $project: { name: 1, orderCount: { $size: "$user_orders" } } }])在這個(gè)例子中,我們首先使用$lookup將訂單關(guān)聯(lián)到用戶(hù),然后使用$size來(lái)計算每個(gè)用戶(hù)的訂單數。
上文歸納(′?_?`)
通過(guò)組合$lookup、$match(??ヮ?)?*:???和$size操作符,你可以構建強???大的聚合查詢(xún)來(lái)(′▽?zhuān)?處理復雜的數據關(guān)聯(lián)和過(guò)濾任務(wù),這些操作符提供了靈活的方式來(lái)提取、匹配和統計M??ongoDB集合(he)中的數據,記住,聚合管道的執行順序很重要,通常建議將$ma(′▽?zhuān)?tch操作放在前面,以便盡早地減少數據集的大小(xiao),而$lookup通常用于關(guān)聯(lián)數據,$size則(ze)用于分析數組字段。
客服電話(huà)18090326145
Copyright ? 2012-2018 天津九安特機電工程有限公司 版權所有 備案號:
客服電話(huà)17310736913