gpt4 book ai didi

RavenDB 查询记分牌

转载 作者:行者123 更新时间:2023-12-02 16:56:21 25 4
gpt4 key购买 nike

给定一个这样的记分板:即(允许相同的分数和用户)

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com