Сопоставление структуры с результатом mgo

У меня есть следующий документ в моем локальном mongodb:

_id 25dd9d29-efd5-4b4e-8af0-360c49fdba31
name Reykjavik
initialDiseaseColouring blue

В моем коде я настроил структуру города следующим образом:

type City struct {
    ID bson.ObjectId `bson:"_id,omitempty"`
    Name string
    InitialDiseaseColouring string
}

Я запрашиваю его, используя

result := City{}
collection.Find(bson.M{"name":"Reykjavik"}).One(&result)

Когда я пытаюсь получить доступ к атрибуту initialDiseaseColouring, его там нет

Это результат, когда я печатаю его:

{ObjectIdHex("32356464396432392d656664352d346234652d386166302d333630633439666462613331") Reykjavik }

Кто-нибудь знает, почему?

Я следовал примеру на https://gist.github.com/border/3489566.


person AlwaysNull    schedule 13.07.2016    source источник


Ответы (1)


По умолчанию кодек bson использует в качестве ключа имя поля в нижнем регистре. Используйте тег поля, чтобы указать другой ключ:

type City struct {
    ID bson.ObjectId `bson:"_id,omitempty"`
    Name string
    InitialDiseaseColouring string `bson:"initialDiseaseColouring"`
}

Добавление тега поля изменяет ключ с «initialdiseasecoloring» на «initialDiseaseColouring».

person Cerise Limón    schedule 13.07.2016