首页  >  文章  >  后端开发  >  如何使用 Go 高效地统计 MongoDB 中多个场所的特定属性?

如何使用 Go 高效地统计 MongoDB 中多个场所的特定属性?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-25 21:57:03462浏览

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