Using mgo I'm unable to store any meaningful data. Only the _id
gets stored
type Person struct {
name string
age int
}
func main() {
session, err := mgo.Dial("localhost")
if err != nil {
log.Fatal(err)
}
defer session.Close()
p := Person{"Joe", 50}
ppl := session.DB("rest").C("people")
ppl.Insert(p)
}
The result in Mongo is just the _id field - no sign of "Joe".
Using go 1.1.2 on Arch linux, MongoDB 2.4.6.
The mgo package can't access unexported (lowercase) fields of your struct (i.e. no other package than the one the struct is defined in can). You need to export them (first letter must be upper case), like this:
If you wish to have the field names in lower case in the DB you must provide a struct tag for them, like this:
See the documentation on names:
EDIT:
Gustavo Niemeyer (author of the
mgo
andbson
packages) noted in the comments that unlike thejson
package, thebson
marshaller will lowercase all struct field names when commiting to the database, effectively making the last step in this answer superfluous.