我正在尝试使用mgo在MongoDB中插入一些数据,但结果并非我想要的结果。
我的结构
def initialize(COULD BE A USER OR ADMIN, scope)
@user = USER OR ADMIN
@scope = scope
end
def update?
return true if user is either resource.user or ANY ADMIN
end
我的插入声明
type Slow struct {
Endpoint string
Time string
}
我是如何打印的
err := collection.Insert(&Slow{endpoint, e})
if err != nil {
panic(err)
}
我的输出(Marshaled JSON)
var results []Slow
err := collection.Find(nil).All(&results)
if err != nil {
panic(err)
}
s, _ := json.MarshalIndent(results, " ", " ")
w.Write(s)
我想要什么
[{
"Endpoint": "/api/endpoint1",
"Time": "0.8s"
},
{
"Endpoint": "/api/endpoint2",
"Time": "0.7s"
}]
谢谢。
答案 0 :(得分:0)
首先,您似乎希望按Endpoint
排序结果。如果在查询时未指定任何排序顺序,则无法保证任何特定顺序。所以像这样查询它们:
err := collection.Find(nil).Sort("endpoint").All(&results)
接下来,您想要的不是结果的JSON表示。要获得所需的格式,请使用以下循环:
w.Write([]byte{'{'})
for i, slow := range results {
if i > 0 {
w.Write([]byte{','})
}
w.Write([]byte(fmt.Sprintf("\n\t\"%s\":\"%v\"", slow.Endpoint, slow.Time)))
}
w.Write([]byte("\n}"))
输出正如您所期望的那样(在Go Playground上尝试):
{
"/api/endpoint1":"0.8s",
"/api/endpoint2":"0.7s"
}