我正在使用来自MongoDB的$substr
命令构建聚合管道查询,但我不知道如何使用mgo驱动程序在Go中表示它所需的数组,因为它包含不同类型的值(字符串,int )。
以下是javascript中的查询:
[ {$group: {"_id": {"dt": {"$substr": ["$dt",0,6]}}}} ]
这样做的目的是获取dt
的子字符串(来自前一个聚合阶段),起始索引为0,结束索引为6。
在Go中我得到了:
[]bson.M{"$group": bson.M{"_id": bson.M{"dt": bson.M{"$substr": ["$dt",0,6]}}}}}
但是["$dt",0,6]
不是正确的表示,我尝试的所有内容似乎都失败了。
答案 0 :(得分:13)
您可以使用[]interface{}
类型的切片表示这些值:
l := []interface{}{"$dt", 0, 6}
如果您发现语法有点脏,可以轻松定义本地类型以使其看起来更好:
type list []interface{}
l := list{"$dt", 0, 6}