如何处理从 mongo 返回的任意散列(使用 mgo)?

我能找到的所有引用都构造了一个结构来保存返回值,假设每个返回的记录都具有相同的模式。如果它们真的是文档并且除了一些可查询的一致元数据属性之外没有一致的模式,我该如何处理该返回值?

例如:这个https://groups.google.com/forum/#!msg/mgo-users/KirqfCSlKFc/t2l3l4yxFRwJ假设你有一个时间戳数组。如果它是一个数组,其中一些值是时间戳,一些是字符串怎么办?

在 ruby 中,我只是将整个返回的记录视为任意散列并逐个键地处理它。我可以用它做什么?


开满天机
浏览 199回答 1
1回答

慕尼黑5688855

您可以使用通用地图,例如:var result map[string]interface{} err := collection.Find(query).One(&result)您会发现有人在使用bson.M,这也是一个具有相同基础类型的地图。不过没有什么特别的bson.M。它只是地图的一个简短而方便的名称。您可以创建自己的方便名称,或使用上面示例中的普通地图。另一种在没有定义模式的情况下访问文档的方法是使用bson.D代替上面的地图类型。bson.D当文档中元素的顺序相关时,或者如果您想稍微减少操作开销(地图由于其性质而处理起来更昂贵)时,这是最有用的。该bson.D类型是具有键/值对结构的值的切片。与bson.M,不同,它bson.D是特殊的,由 mgo/bson 包在内部处理。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go