0

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

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

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

4

1 回答 1

2

您可以使用通用地图,例如:

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 包内部处理。

于 2014-01-17T14:00:54.197 回答