RavenDB 查询记分牌

标签 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 个和下面 2 个

日期在那里,但不影响查询,当有新分数出现并且存在相同值时,它会包含在下面。

最好的方法是什么?

目前我正在做最糟糕的事情,那就是进行三个查询:一个查询获取我正在寻找的分数,然后另外两个查询获取上方和下方的一些行。 我看过一些关于 GG 的讨论但我无法做出任何有意义的工作,希望在这里发布问题可以

更新:discussion group 上也有此线程但似乎也没有解决它。

谢谢

最佳答案

缪, 您实际上没有选择,您可以将其分为两个查询:

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();

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

关于RavenDB 查询记分牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11153538/

相关文章:

mongodb - 迁移 Azure 表存储

python - 按列表条目过滤 RavenDB 查询

c# - RavenDB Multi Map reduce 遇到问题

c# - 创建索引时 RavenDB 上的任务取消异常

rest - 如何使用 Ravendb 在 POST 请求中定义 id

scalability - RavenDB - 规划可扩展性

.net - 使用值对象作为 RavenDB .NET 客户端的标识符

design-patterns - 文档数据库 - 非规范化引用 - 最佳实践

replication - RavenDB 复制设置基础

ravendb - AppHarbor + RavenDB - EsentFileAccessDeniedException