透過檢查MongoDB 中的多個屬性值來擷取項目清單
使用MongoDB 時,經常需要根據多個屬性值來擷取特定項目屬性值,類似MySQL中使用的IN條件。本文示範如何使用 MongoDB 中的管道操作組合來實現此目的。
聚合框架
在這個場景中,我們將使用聚合框架建立一個用於過濾和聚合來自MongoDB 集合(稱為「venueList」)的資料的管道。目標是根據場地 ID 清單檢索使用特定作業系統(例如 Linux 或 Ubuntu)的使用者總數。
管道階段
The管道由多個階段組成,這些階段協同工作來轉換和匯總數據:
預期輸出
聚合管道的最終輸出將是包含指定場地ID 上的Linux 和Ubuntu 用戶總數的文件:
<code class="json">{ "_id": null, "linux": 14, "ubuntu": 4 }</code>
Go 實作
使用mgo 套件在Go 中使用此管道,您可以按照以下步驟操作:
<code class="go">query := []bson.M{ {"$match": bson.M{"venueList.id": bson.M{"$in": []string{"VID1212", "VID4343"}}}}, {"$unwind": "$venueList"}, {"$match": bson.M{"venueList.id": bson.M{"$in": []string{"VID1212", "VID4343"}}}}, {"$unwind": "$venueList.sum"}, { "$group": bson.M{ "_id": nil, "linux": bson.M{"$sum": bson.M{"$cond": []interface{}{bson.M{"$eq": []interface{}{"$venueList.sum.name", "linux"}}, "$venueList.sum.value", 0}}}, "ubuntu": bson.M{"$sum": bson.M{"$cond": []interface{}{bson.M{"$eq": []interface{}{"$venueList.sum.name", "ubuntu"}}, "$venueList.sum.value", 0}}}, }, }, }</code>
以上是如何使用聚合管道在 MongoDB 中基於多個屬性值檢索項目計數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!