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
}
Другие вопросы по тегам