如何用混合类型表示数组

时间:2013-09-27 15:50:56

标签: mongodb go mgo

我正在使用来自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]不是正确的表示,我尝试的所有内容似乎都失败了。

1 个答案:

答案 0 :(得分:13)

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

    l := []interface{}{"$dt", 0, 6}

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

    type list []interface{}
    l := list{"$dt", 0, 6}