Выберите столбец из Mongodb в golang, используя mgo

Как я знаю, мы можем использовать

> db['twitter-3'].find({}, {"text": 1})

чтобы выбрать все тексты в коллекции.

Как мы можем использовать mgo для поиска определенного поля в golang? Я попробовал

var result []string
err = conn.Find(bson.M{}, bson.M{"text", 1}).All(&result)

Но это неверно.

Ответ 1

Используйте запрос Select, чтобы указать возвращаемые поля:

var result []struct{ Text string `bson:"text"` }
err := c.Find(nil).Select(bson.M{"text": 1}).All(&result)
if err != nil {
    // handle error
}
for _, v := range result {
     fmt.Println(v.Text)
}

В этом примере я объявил анонимный тип с одним выбранным полем. Это нормально, чтобы использовать тип со всеми полями документа.

Ответ 2

чтобы выбрать несколько полей:

var result []struct{
    Text string `bson:"text"`
    Otherfield string `bson:"otherfield"`
}

err := c.Find(nil).Select(bson.M{"text": 1, "otherfield": 1}).All(&result)
if err != nil {
   // handle error
}
for _, v := range result {
    fmt.Println(v.Text)
}

Ответ 3

var result interface{}
err = c.Find(nil).Select(bson.M{"text": 1}).All(&result)