望官方能看看该问题。云开发根据两个条件实时排名问题,怎么搞?求大神们来瞄一眼。
发布于 5 年前 作者 guolei 14310 次浏览 来自 官方Issues

[

{ id: 1, time: 16, number: 30 },

{ id: 2, time: 10, number: 37 },

{ id: 3, time: 12, number: 25 },

{ id: 4, time: 12, number: 29 },

{ id: 5, time: 12, number: 35 },

{ id: 6, time: 13, number: 39 },

{ id: 7, time: 15, number: 35 },

{ id: 8, time: 14, number: 33 },

]

规则:time越小排名越靠前(升序)。time相同时,number越小排名越靠前(升序)。(因为排名是实时的,不能把排名固定在数据库。)

例如:上图所示,我求id为4的排名。答案应该是第三名。

我的实现方式:我用了一个比较笨的方法也能实现。就是笨了一点。

先用 time:_lt(12),返回 totalx = 1。

然后再查time = 12,number:_lt(29),返回totaly = 1。

所以是(totalx+totaly+1)。表示我排名前面有2个,我在第3。

我还要获取id为4的数据,所以为了获取id为4 的数据和排名就查询了3次数据库。

求:其它更优的方法。

1 回复

可怜,孤独,又无助,没有大牛解答一下么。

回到顶部