首頁  >  文章  >  後端開發  >  如何使用 Go 有效率地統計 MongoDB 中多個場所的特定屬性?

如何使用 Go 有效率地統計 MongoDB 中多個場所的特定屬性?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-25 21:57:03554瀏覽

How to Efficiently Count Specific Attributes Across Multiple Venues in MongoDB using Go?

在Go 中通過檢查MongoDB 中的多個屬性值來檢索項目列表

問題:

給定一個包含場地及其屬性的巢狀清單的JSON 資料結構,如何擷取多個場地的特定屬性(例如Linux 使用者)的計數?例如,您想要統計 ID 為「VID1212」和「VID4343」的場所的 Linux 使用者數量。

解決方案:

要在MongoDB 中實現此目的,您可以利用聚合框架:

  1. $match: 使用$in 運算子依照指定場地ID 過濾文件。
  2. $unwind :展平嵌套的venueList和sum數組以非規範化資料。
  3. $match(第二個應用程式):重新過濾展開的文件以僅考慮所需的場地ID。
  4. $unwind(第二次應用):繼續展開巢狀的 sum 子文件。
  5. $group:** 根據**name** 欄位將文件分組的sum 子文件並使用累加器**$sum.
  6. $cond: 聚合**value** 欄位使用條件式為每個欄位建立單獨的計數欄位所需的屬性(例如linux、ubuntu)。

要獲得更靈活的替代方案:

  1. 將最後一個聚合階段替換為:

    { 
     "$group": {
         "_id": null,
         "counts": {
             "$push": {
                 "name": "$_id",
                 "count": "$count"
             }
         }
     }
    }

此替代方案根據屬性名稱分組,並將對應的計數推送到數組中。

有關使用 mGo (v2) 在 Golang 中的實現,請參閱 http:// /godoc.org/labix.org/v2/mgo#Collection.Pipe.

以上是如何使用 Go 有效率地統計 MongoDB 中多個場所的特定屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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