mongodb - 为什么 mongo-go-driver 聚合结果对象键返回为“键”
问题描述
我想使用聚合将一些数据与 mongo-go-driver 分组,但 json 结果让我感到困惑,因为行键替换为“键”,而真正的键变成了“键”的值
var result primitive.A
pipeline := mongo.Pipeline{{{"$group", bson.D{{"_id", "$nis"}}}}}
cursor, err := db.NilaiUH.Aggregate(context.TODO(), pipeline)
cursor.All(context.Background(), &result)
json.NewEncoder(w).Encode(&result)
这是结果
[
[
{
"Key": "_id",
"Value": 15100
}
],
[
{
"Key": "_id",
"Value": 15101
}
]
]
解决方案
新版本的 MongoDB 驱动程序将空接口视为键和值的数组,而不是字符串和空接口之间的映射。我已使用以下代码更正了该问题:
// register custom codec registry to handle empty interfaces
rb := bson.NewRegistryBuilder()
rb.RegisterTypeMapEntry(bsontype.EmbeddedDocument, reflect.TypeOf(bson.M{}))
client, err := mongo.NewClient(options.Client().ApplyURI(url).SetRegistry(rb.Build()))
推荐阅读
- javascript - 等待 useEffect 完成,然后访问对象属性
- python - 在 seaborn 图下方添加一个表格
- php - 如何在 Laravel 7 中使用固定选项填充多选
- django-rest-framework - {“详细信息”:“未找到。” }
- vagrant - Nifi:无法从 './data/flow.xml.gz.new.xml.gz' 重命名为 './data/flow.xml.gz'
- r - R包“robCompositions”安装问题
- docker - Docker Swarm - 请求无法到达不同节点上的服务
- postgresql - 月间隔 Postgres
- c++ - Aws C++ SDK 最小安装
- php - PHP多数组合并JSON