Выберите столбец из Mongodb в golang с помощью mgo

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

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

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

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

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

Но это не так.


person Wyatt    schedule 29.06.2015    source источник


Ответы (2)


Используйте метод запроса 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)
}

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

person Cerise Limón    schedule 29.06.2015
comment
Что означает bson:"text" в структуре? Есть ли какие-нибудь ссылки, которые я могу проверить, чтобы лучше понять это? - person Wyatt; 30.06.2015
comment
Информацию о том, как пакет использует теги полей, см. В документации по пакету bson. . - person Cerise Limón; 30.06.2015
comment
Спасибо! Как выбрать несколько столбцов? Простое добавление Select (bson.M {text: 1, anotherColumn: 1}) не работает. - person Amol; 29.11.2017
comment
почему it returns intype map [] [] `не как json - person muthukumar selvaraj; 08.04.2018

для выбора нескольких полей:

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)
}
person drrzmr    schedule 23.02.2018