【发布时间】:2021-04-28 09:46:28
【问题描述】:
我有以下具有结构的文档集合:
type Streak struct {
UserID string `fauna:"user_id"`
Username string `fauna:"username"`
Count int `fauna:"count"`
UpdatedAt time.Time `fauna:"updated_at"`
CreatedAt time.Time `fauna:"created_at"`
}
这在 FaunaDB 集合中如下所示:
{
"ref": Ref(Collection("streaks"), "288597420809388544"),
"ts": 1611486798180000,
"data": {
"count": 1,
"updated_at": Time("2021-01-24T11:13:17.859483176Z"),
"user_id": "276989300",
"username": "yodanparry"
}
}
基本上我需要一个 lambda 或一个函数,它接受 user_id 并在集合中吐出它的 rank。 rank 仅按 count 字段排序。例如,假设我有以下文档(为简单起见,我忽略了其他字段):
| user_id | count |
|---|---|
| abc | 12 |
| xyz | 10 |
| fgh | 999 |
如果我输入 fgh 作为这个 lambda 函数的输入,我希望它输出 1(如果从 0 开始计数,则输出 0)。
我已经有一个user_id 的索引,所以我可以从这个索引中查询和匹配一个文档引用。我还有一个索引sorted_count,它根据count 字段升序对文档进行排序。
我目前的解决方案是通过sorted_count 索引查询所有文档,然后通过遍历数组来获得排名。我认为应该有更好的解决方案。我只是没看到。
请帮忙。谢谢!
【问题讨论】: