首頁  >  文章  >  後端開發  >  如何使用 Go 有效地統計 MongoDB 中多個地點的使用者代理程式出現次數?

如何使用 Go 有效地統計 MongoDB 中多個地點的使用者代理程式出現次數?

Susan Sarandon
Susan Sarandon原創
2024-10-26 11:00:02127瀏覽

How to Efficiently Count User Agent Occurrences Across Multiple Venues in MongoDB Using Go?

透過在Go 中檢查MongoDB 中的多個屬性值來檢索項目清單

目標是透過匹配多個來檢索MongoDB 中的項目清單屬性值,類似SQL中的IN條件。在本例中,目標是計算包含場地清單陣列的 JSON 文件中「linux」和「ubuntu」使用者代理程式的出現次數。每個場地清單都有一個 sum 子文件數組,其中包含使用者代理名稱和值。

解決方案涉及使用 MongoDB 中的聚合框架和 Go 中的 mgo 套件。以下是聚合管道的細分:

  1. 按場地ID 過濾: 使用$match 管道選擇venueList.id 欄位與所需場地ID 相符的文件(例如, “VID1212 ”和“VID4343”)。
  2. 展開場地清單:使用 $unwind 管道對venueList 陣列進行非規範化,為每個場地建立單獨的文件。
  3. 過濾場地 ID:展開後,再次過濾文檔,以確保僅保留所需的場地 ID。
  4. 展開總和子文檔:展開總和子文檔數組以非規範化用戶代理名稱和值。
  5. 分組和求和: 使用 $group 管道按使用者代理名稱將文件分組,並使用 $sum 運算子對對應的值求和。
  6. 建立獨立計數欄位:為了方便閱讀,您可以在 $group 管道中使用三元運算子 ($cond) 為「linux」和「ubuntu」建立獨立計數欄位。
  7. 獲得更好效能的替代方法:為了更有效的替代方案,您可以使用稍微不同的 $group 管道來聚合使用者代理計數並按名稱對它們進行分組。

最後,使用 mgo.Collection.Pipe() 方法將聚合管道轉換為 Go,以針對 MongoDB 集合執行它。這將傳回一個項目列表,以及指定使用者代理程式和場地 ID 的相關計數。

以上是如何使用 Go 有效地統計 MongoDB 中多個地點的使用者代理程式出現次數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn