Você pode usar um mapa genérico, por exemplo:
var result map[string]interface{}
err := collection.Find(query).One(&result)
Você encontrará pessoas usando
bson.M
, que também é um mapa com o mesmo tipo subjacente. Não há nada de especial em bson.M
, no entanto. É apenas um nome curto e conveniente para um mapa. Você pode criar seu próprio nome conveniente ou usar um mapa simples como no exemplo acima. Outra forma de ter acesso a documentos sem um esquema definido é usando
bson.D
no lugar do tipo de mapa acima. bson.D
é mais útil quando a ordem dos elementos no documento é relevante ou se você deseja reduzir um pouco a sobrecarga da operação (os mapas são um pouco mais caros de manusear devido à sua natureza). O bson.D
type é uma fatia de valores de struct com pares de chave/valor. Ao contrário de bson.M
, bson.D
é especial e é tratado internamente pelo pacote mgo/bson.