我有以下代码,使用 go.mongodb.org/mongo-driver 库:
updateMap := bson.M{
"$set": bson.M{
"dateAdded": primitive.NewDateTimeFromTime(time.Now()),
},
}
if len(alias) > 0 {
// I don't see how this type assertion is necessary
updateMap["$set"].(map[string]interface{})["alias"] = alias
}
如果我做:
updateMap["$addFields"].(map[string]map[string]string)["alias"] = alias
它不编译。编译器已经知道 updateMap 是 bson.M 类型,它是一个map[string]interface{}. 如何断言它确实在map[string]interface{}做对编译器有用的事情?我以为它会想知道它实际上是什么类型的界面,但显然它不想让我那样做。
这里发生了什么?
编辑:当然,应该注意的是,这里没有类型断言,它不会编译:
无效操作:无法索引 updateMap["$addFields"](接口类型的地图索引表达式{})
qq_笑_17
相关分类