title: Golang mgo getting empty objects
body: <p>I'm trying to learn Go API development. I have a MongoDB instance running in a Docker container. I'm trying to follow a few guides but am failing on simple queries. I don't fully understand the use of BSON and JSON tags here. I do know what those terms mean. So here is my code.</p>
  
  <pre><code>import (
      "fmt"
      "time"
  
      "gopkg.in/mgo.v2/bson"
  )
  
  const (
      hosts      = "localhost:27017"
      database   = "my_database"
      username   = "dev1"
      password   = "password123"
      collection = "users"
  )
  
  type users struct {
      user string `bson:"user" json:"user"`
      data string
  }
  
  func main() {
  
      fmt.Println("Starting Application!")
  
      info := &amp;mgo.DialInfo{
          Addrs:    []string{hosts},
          Timeout:  60 * time.Second,
          Database: database,
          Username: username,
          Password: password,
      }
  
      session, err1 := mgo.DialWithInfo(info)
      if err1 != nil {
          panic(err1)
      }
      defer session.Close()
  
      col := session.DB(database).C(collection)
  
      var user users
      var books []users
      var username = "cat"
  
      col.Insert(&amp;users{user: "dog", data: "blah"})
      err3 := col.Find(bson.M{"user": username}).One(&amp;user)
      fmt.Println(user)
      fmt.Println(err3)
      count, err2 := col.Count()
      if err2 != nil {
          panic(err2)
      }
      fmt.Println(fmt.Sprintf("Messages count: %d", count))
  
      fmt.Println(user)
      col.Find(bson.M{}).All(&amp;books)
      fmt.Println(books)
  }
  </code></pre>
  
  <p>Basically I'm getting empty objects on the print line but am getting the correct Message count. I inserted the objects with robomongo if that helps.</p>
  
  <p><a href="https://i.stack.imgur.com/4HPlB.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/4HPlB.png" alt="Objects in Collection"></a></p>