给出这样的记分牌:即(相同分数和允许用户)
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上还有这个帖子,但它似乎也无法解决。
由于
答案 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();
现在,将在单个请求中针对数据库发出两个查询。