将 MongoDB $max 结果转换为 golang 数据
Converting MongoDB $max result to golang data
我尝试从我的 Go 代码中获取 MongoDB 集合中的最大值。
我应该使用什么类型来解码结果?
当我使用 bson.D{}
作为 val2
类型时,结果看起来像 [{_id <nil>} {max 66} {cnt 14}]
.
代码如下:
filter := []bson.M{{
"$group": bson.M{
"_id": nil,
"max": bson.M{"$max": "$hellid"},
}},
}
cursor, err := collection.Aggregate(ctx, filter)
for cursor.Next(ctx) {
val2 := ???
err := cursor.Decode(&val2)
fmt.Printf("cursor: %v, value: %v\n", cursor.Current, val2)
}
}
使用 bson.D
已经可以像您介绍的那样工作了。问题可能是您无法 "easily" 获取 max
和 cnt
值。
使用如下结构为结果文档建模:
type result struct {
Max int `bson:"max"`
Count int `bson:"cnt"
}
虽然cnt
不是由您提供的示例代码生成的。
然后:
var res result
err := cursor.Decode(&res)
我尝试从我的 Go 代码中获取 MongoDB 集合中的最大值。 我应该使用什么类型来解码结果?
当我使用 bson.D{}
作为 val2
类型时,结果看起来像 [{_id <nil>} {max 66} {cnt 14}]
.
代码如下:
filter := []bson.M{{
"$group": bson.M{
"_id": nil,
"max": bson.M{"$max": "$hellid"},
}},
}
cursor, err := collection.Aggregate(ctx, filter)
for cursor.Next(ctx) {
val2 := ???
err := cursor.Decode(&val2)
fmt.Printf("cursor: %v, value: %v\n", cursor.Current, val2)
}
}
使用 bson.D
已经可以像您介绍的那样工作了。问题可能是您无法 "easily" 获取 max
和 cnt
值。
使用如下结构为结果文档建模:
type result struct {
Max int `bson:"max"`
Count int `bson:"cnt"
}
虽然cnt
不是由您提供的示例代码生成的。
然后:
var res result
err := cursor.Decode(&res)