Golang MGO результат в простой срез
Я довольно новичок в Go и MongoDB. Попытка выбрать одно поле из БД и сохранить его в срезе int без какой-либо пользы.
userIDs := []int64{}
coll.Find(bson.M{"isdeleted": false}).Select(bson.M{"userid": 1}).All(&userIDs)
Выше распечатывает пустой ломтик. Однако, если я создаю структуру с одним ID
поле, которое является int64 с маршаллингом, то работает нормально.
Все, что я пытаюсь сделать, - это работать с простым слайсом, содержащим нужные мне идентификаторы вместо структуры с одним полем. Вся помощь приветствуется.
1 ответ
Решение
Поскольку mgo запрашивает возврат документов, для достижения цели требуется несколько строк кода:
var result []struct{ UserID int64 `bson:"userid"` }
err := coll.Find(bson.M{"isdeleted": false}).Select(bson.M{"userid": 1}).All(&result)
if err != nil {
// handle error
}
userIDs := make([]int64, len(result))
for i := range result {
userIDs[i] = result.UserID
}