如何用混合类型表示数组

Mak*_*dis 7 go mongodb mgo

我正在使用$substrMongoDB中的命令构建聚合管道查询,但我不知道如何使用mgo驱动程序在Go中表示它所需的数组,因为它包含不同类型的值(字符串,整数).

这是javascript中的查询:

[ {$group: {"_id": {"dt": {"$substr": ["$dt",0,6]}}}} ]
Run Code Online (Sandbox Code Playgroud)

这是尝试做的是dt从起始索引0和结束索引6 得到(从前一阶段的聚合)的子串.

在Go我得到:

[]bson.M{"$group": bson.M{"_id": bson.M{"dt": bson.M{"$substr": ["$dt",0,6]}}}}}
Run Code Online (Sandbox Code Playgroud)

["$dt",0,6]不是一个正确的表示,我尝试的一切似乎都失败了.

Gus*_*yer 13

您可以使用以下类型的切片表示这些值[]interface{}:

    l := []interface{}{"$dt", 0, 6}
Run Code Online (Sandbox Code Playgroud)

如果您发现语法有点脏,您可以轻松定义本地类型以使其看起来更好:

    type list []interface{}
    l := list{"$dt", 0, 6}
Run Code Online (Sandbox Code Playgroud)