透過在Go 中檢查MongoDB 中的多個屬性值來檢索項目清單
目標是透過匹配多個來檢索MongoDB 中的項目清單屬性值,類似SQL中的IN條件。在本例中,目標是計算包含場地清單陣列的 JSON 文件中「linux」和「ubuntu」使用者代理程式的出現次數。每個場地清單都有一個 sum 子文件數組,其中包含使用者代理名稱和值。
解決方案涉及使用 MongoDB 中的聚合框架和 Go 中的 mgo 套件。以下是聚合管道的細分:
-
按場地ID 過濾: 使用$match 管道選擇venueList.id 欄位與所需場地ID 相符的文件(例如, “VID1212 ”和“VID4343”)。
-
展開場地清單:使用 $unwind 管道對venueList 陣列進行非規範化,為每個場地建立單獨的文件。
-
過濾場地 ID:展開後,再次過濾文檔,以確保僅保留所需的場地 ID。
-
展開總和子文檔:展開總和子文檔數組以非規範化用戶代理名稱和值。
-
分組和求和: 使用 $group 管道按使用者代理名稱將文件分組,並使用 $sum 運算子對對應的值求和。
-
建立獨立計數欄位:為了方便閱讀,您可以在 $group 管道中使用三元運算子 ($cond) 為「linux」和「ubuntu」建立獨立計數欄位。
-
獲得更好效能的替代方法:為了更有效的替代方案,您可以使用稍微不同的 $group 管道來聚合使用者代理計數並按名稱對它們進行分組。
最後,使用 mgo.Collection.Pipe() 方法將聚合管道轉換為 Go,以針對 MongoDB 集合執行它。這將傳回一個項目列表,以及指定使用者代理程式和場地 ID 的相關計數。
以上是如何使用 Go 有效地統計 MongoDB 中多個地點的使用者代理程式出現次數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!