2015-12-02 2 views
1

Я довольно новичок и для Go и MongoDB. Попытка выбрать одно поле из БД и сохранить его в едином срезе без каких-либо изменений.Golang mgo результат в простой срез

userIDs := []int64{} 

coll.Find(bson.M{"isdeleted": false}).Select(bson.M{"userid": 1}).All(&userIDs) 

Приведенное выше выдает пустой кусочек. Однако, если я создам структуру с одним полем ID, которое является int64 с сортировкой, то оно отлично работает.

Все, что я пытаюсь сделать, это работать с простым фрагментом, содержащим идентификаторы, которые мне нужны, вместо структуры с одним полем. Вся помощь приветствуется.

+0

вы можете сделать это с родной клиент MongoDB? вы можете не поддерживать клиента db, чтобы выполнять много вспомогательных функций. но вы можете сделать это с помощью простой функции для преобразования структуры [] в [] int64. –

ответ

3

Поскольку запросы возвращают 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 
} 
+0

Вот что я в итоге использовал. Было просто странно писать это обращение и хотелось посмотреть, есть ли другой способ. благодаря – khuderm

Смежные вопросы