Мго и вопрос о голанге.
Я снова сталкиваюсь с проблемой. Я пытаюсь обновить запись в базе данных, но выполнение простой команды visitors.UpdateId(v.Id, bson.M{"$set": zscore});
, где zscore
- переменная type Zscore
, не работает. Однако, если я вручную конвертирую zscore
в структуру bson.M
, все работает нормально.
Кто-нибудь знает, как обновить запись в mongodb с помощью mgo, без ручного сброса значений структуры в bson.M?
Пример:
type Zscore struct {
a float64 `bson:"a,omitempty" json:"a"`
b float64 `bson:"b,omitempty" json:"b"`
c float64 `bson:"c,omitempty" json:"c"`
}
v := Visitor{}
zscore := Zscore{}
visitors := updater.C("visitors")
for result.Next(&v) {
zscore.a = 1
zscore.b = 2
zscore.c = 0
//does not work
if err := visitors.UpdateId(v.Id, bson.M{"$set": zscore}); err != nil {
log.Printf("Got error while updating visitor: %v\n", err)
}
//works
set := bson.M{
"zscore.a": zscore.a,
"zscore.b": zscore.b,
"zscore.c": zscore.c,
}
if err := visitors.UpdateId(v.Id, bson.M{"$set": set}); err != nil {
log.Printf("Got error while updating visitor: %v\n", err)
}
}