如何使用Go驱动程序从嵌套对象按顺序获取RethinkDB中的数据?
所以,让我想象一下,我的桌子上有这样的json:
[
{
"id": "1",
"date": "2001-01-15",
"time": {
"begin": "09:00",
"end": "10:30"
}
},
{
"id": "2",
"date": "2001-01-16",
"time": {
"begin": "08:30",
"end": "10:30"
}
}
]
Go模型是:
type MyTime struct {
Begin time.Time `json:"begin"`
End time.Time `json:"end"`
}
type Something struct {
Id string `json:"id"`
Date time.Time `json:"date"`
Time MyTime `json:"time"`
}
示例如何通过id订购:
var result []Something
db.Table("someTable").OrderBy("id").Run(session).All(&result)
我试着按照这样的时间开始订购(认为方法与ArangoDB相同,但显然不是):
var result []Something
db.Table("someTable").OrderBy("time.begin").Run(session).All(&result)
我在官方网站上看到了一个使用原生javascript驱动程序
的工作原理的例子Example: Use nested field syntax to sort on fields from subdocuments. (You can also create indexes on nested fields using this syntax with indexCreate.) r.table('user').orderBy(r.row('group')('id')).run(conn, callback)
但目前还不清楚如何将其转化为Go。
知道如何让它发挥作用吗?
答案 0 :(得分:1)
你可以使用这样的函数:
db.Table("someTable").OrderBy(func(row Term) Term {
return row.Field("time").Field("begin")
}).Run(session).All(&result)