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.