通过检查 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中文网其他相关文章!