2015-06-29 11 views
5

Per quanto ne so, possiamo usareSelezionare la colonna da MongoDB in golang utilizzando MgO

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

per selezionare tutti i testi in collezione.

Come possiamo usare mgo per trovare il campo specifico in golang? Ho provato

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

Ma non è corretto.

risposta

12

Utilizzare il metodo di query Select per specificare i campi per tornare:

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) 
} 

In questo esempio, ho dichiarato un tipo anonimo con quello campo selezionato. Va bene usare un tipo con tutti i campi del documento.

+0

Nella struttura, che cosa fa 'BSON: "testo"' stand for? C'è qualche riferimento che posso verificare per capire meglio questo? – Wyatt

+1

Vedere la documentazione [pacchetto bson] (http://godoc.org/labix.org/v2/mgo/bson#Marshal) per informazioni su come il pacchetto utilizza i tag di campo. –

+1

Grazie! Come si selezionano più colonne? Basta aggiungere Select (bson.M {"text": 1, "anotherColumn": 1}) non funziona. – Amol

0

per selezionare più campi:

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) 
}