RavenDB查询记分板

时间:2012-06-22 09:25:45

标签: ravendb

给出这样的记分牌:即(相同分数和允许用户)

user    |  score  |  date

user1   |   1000  | 10-05-2012
user1   |    999  | 10-05-2012
user2   |    998  | 10-05-2012
user1   |    998  | 10-05-2012
user4   |    987  | 10-05-2012

我想在文档中查询特定分数,并在

以下获得x结果

例如说我希望将目标设定为得分为998且得到2以上且2以下

日期存在但不影响查询,当新分数出现并且存在相同的值时,它将包括在下面。

最好的方法是什么?

目前我正在做更糟糕的事情,那就是有三个查询:一个获得我正在寻找的分数,然后另外两个获得上面和下面的一些行。 我已经在GG上看到了一些讨论,但我无法做出任何有意义的工作,希望在这里发布问题是好的

更新:discussion group上还有这个帖子,但它似乎也无法解决。

由于

1 个答案:

答案 0 :(得分:2)

MIAU, 你没有真正的选择,你可以将它放到两个查询中:

var q1 = session.Query<Score>().Where(x=>x.Value >= 998).OrderBy(x=> x.Value).Take(3).ToList();
var q2 = session.Query<Score>().Where(x=>x.Value < 998).OrderByDescending(x=> x.Value).Take(3).ToList();

您可以使用延迟查询来改进:

var q1 = session.Query<Score>().Where(x=>x.Value >= 998).OrderBy(x=> x.Value).Take(3).Lazily();
var q2 = session.Query<Score>().Where(x=>x.Value < 998).OrderByDescending(x=> x.Value).Take(3).Lazily();

现在,将在单个请求中针对数据库发出两个查询。