首页 > 解决方案 > 如何获取原始 M 中的值

问题描述

showInfoCursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{unwindStage, groupStage})
    if err != nil {
        panic(err)
    }
    var showsWithInfo []bson.M
    if err = showInfoCursor.All(context.TODO(), &showsWithInfo); err != nil {
        panic(err)
    }

我正在迭代 showWithInfo 数组。每个bson.M包含特定键的原始 M类型值。我试图将其转换为结构,但没有成功。

map[operatorId:1 channel: XYZ]

这就是我打印原始 M的值后得到的结果。我需要从中获得这两个值。(运营商 ID,渠道)

标签: mongodbgomongo-go

解决方案


bson.M是 的类型别名primitive.M

type M = primitive.M

并且primitive.M是一个“简单”的地图:

type M map[string]interface{}

因此,您可以像使用任何地图一样索引该值:

m := primitive.M{
    "operatorId": 1,
    "channel":    "XYZ",
}
fmt.Println(m)

fmt.Println("Operator ID:", m["operatorId"])
fmt.Println("Channel:", m["channel"])

这个输出(在Go Playground上试试):

map[channel:XYZ operatorId:1]
Operator ID: 1
Channel: XYZ

推荐阅读