title: Inserting & Querying MongoDB data with Go
body: <pre><code>package main
  
  import (
      "fmt"
      "log"
  
      "gopkg.in/mgo.v2"
      "gopkg.in/mgo.v2/bson"
  )
  
  type Customer struct {
      Id              bson.ObjectId `bson:"_id,omitempty"`
      id              int           `bson:"id,"`
      firstName       string        `bson:"firstName"`
      surname         string        `bson:"surname"`
      gender          string        `bson:"gender"`
      address1        string        `bson:"address1"`
      address2        string        `bson:"address2"`
      city            string        `bson:"city"`
      state_region    string        `bson:"state_region"`
      county_province string        `bson:"county_province"`
      postalCode      string        `bson:"postalCode"`
      country         string        `bson:"country"`
      acct_bal        float64       `bson:"acct_bal"`
      status          string        `bson:"status"`
  }
  
  func main() {
      uri := "localhost:27017"
  
      // connect to mongodb
      session, err := mgo.Dial(uri)
      if err != nil {
          log.Fatal("Couldn't connect to db.", err)
  
      }
      defer session.Close()
  
      // collection
      c := session.DB("mydb").C("customers")
  
      // query one
      result := Customer{}
      err = c.Find(bson.M{"status": "B"}).One(&amp;result)
      if err != nil {
          log.Fatal("Couldn't find him.", err)
  
      }
      fmt.Println("One Result: ", result)
  }
  </code></pre>
  
  <p>So that's the code, 
  If I run the MongoShell I get the correct results ::</p>
  
  <pre><code>{
  "_id" : ObjectId("528cb19def5c88795f00000a"),
  "id" : "00000011",
  "firstName" : "Gerardo",
  "surname" : "Guilfoos",
  "gender" : "M",
  "address1" : "854 Cheerful Breeze Way",
  "address2" : "",
  "city" : "Tavaux",
  "state_region" : "Franche-Comté",
  "county_province" : "Jura",
  "postalCode" : "39501 CEDEX",
  "country" : "FR",
  "acct_balance" : 172.87,
  "status" : "B"
  </code></pre>
  
  <p>}</p>
  
  <p>But the Go file when run gives me this:: </p>
  
  <pre><code>One Result:  {ObjectIdHex("528cb19def5c88795f00000a") 0           0 }
  </code></pre>
  
  <p>I'm following along a course from Udemy and they provide the data structures. Unfortunately for me, the examples they provide are all in PHP so I kind of have to figure out a way to convert all of the code to Go which has been weird. </p>
  
  <p>Also on a second note:: 
  How does one insert a data that matches that struct into a mongoDB collection? 
  I tried this but it has been a failure. </p>
  
  <pre><code>err = c.Insert(&amp;Customer{"id": 1, "firstName": "Joe", "surname": "Hat", "gender": "M", "address1": "46 Pine Road", "address2": "Apartment 1613", "city": "Scarborough", "state_region": "G.T.A", "county_provine": "Ontario", "postalCode": "M1L 1N1", "country": "Canada", "acct_bal": 8.90, "status": "AAA",})
  </code></pre>