【问题标题】:How to represent an array with mixed types如何表示具有混合类型的数组
【发布时间】:2013-10-04 00:04:57
【问题描述】:

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

这是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] 不是正确的表示,我尝试的一切似乎都失败了。

【问题讨论】:

  • 如果你得到的数据包含混合类型,通常最好为它推出一个结构。这为您提供了类型安全性,并使您的代码更易于他人理解。

标签: mongodb go mgo


【解决方案1】:

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

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

如果你觉得语法有点脏,你可以很容易地定义一个本地类型来让它看起来更漂亮:

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

【讨论】:

    猜你喜欢
    • 2021-12-15
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    相关资源
    最近更新 更多