使用mgo在MongoDB中插入数据

I'm trying to insert some data in MongoDB using mgo but the outcome is not what I wanted.

My struct

    type Slow struct {
    Endpoint string
    Time     string
    }

My insert statement

err := collection.Insert(&Slow{endpoint, e}) 
if err != nil {
    panic(err)
}

How I'm trying to print it

    var results []Slow

    err := collection.Find(nil).All(&results)
    if err != nil {
        panic(err)
    }   
    s, _ := json.MarshalIndent(results, "  ", "  ")
    w.Write(s)

My output (Marshaled JSON)

   [{
       "Endpoint": "/api/endpoint1",
       "Time": "0.8s"
    },
    {
       "Endpoint": "/api/endpoint2",
       "Time": "0.7s"
    }]

What I wanted

    {
      "/api/endpoint1":"0.8s",
      "/api/endpoint2":"0.7s"
    }
    //No brackets

Thank you.

First, you seem to want the results sorted by Endpoint. If you don't specify any sort order when querying, you can have no guarantee of any specific order. So query them like this:

err := collection.Find(nil).Sort("endpoint").All(&results)

Next, what you want is not the JSON representation of the results. To get the format you want, use the following loop:

w.Write([]byte{'{'})
for i, slow := range results {
    if i > 0 {
        w.Write([]byte{','})
    }
    w.Write([]byte(fmt.Sprintf("
\t\"%s\":\"%v\"", slow.Endpoint, slow.Time)))
}
w.Write([]byte("
}"))

Output is as you expect it (try it on the Go Playground):

{
    "/api/endpoint1":"0.8s",
    "/api/endpoint2":"0.7s"
}