Ravendb按值查询顺序



我有带有字段scoreid的对象。我需要从fromfrom + count获得一些对象,这些对象按字段score降序排列。在每个相等的范围内,如果存在,我需要在这个范围的顶部获得具有特定值id的对象。

示例:

1. score = 10, id = 5
2. score = 20, id = 6
3. score = 20, id = 7
4. score = 20, id = 8
5. score = 30, id = 9

特定值id=7,from=0,count=2

预期结果:

1. score = 30, id = 9
2. score = 20, id = 7  <--- my specific value on top of equal range, where score = 20

我写简单的查询:

final List<SomeClass> players = session.query(SomeClass.class, SomeIndexClass.class)
.orderByDescending("score", OrderingType.LONG)
.skip(from)
.take(count)
.toList();

但这并没有考虑到具有特定值CCD_ 10的条件。我该怎么做?

如果您在索引中索引了这个id字段,那么您可以在查询中添加一个whereGreaterThan条件,以筛选那些大于'7'的id

所以查询将类似于:

final List<SomeClass> players = session.query(SomeClass.class, SomeIndexClass.class)
.whereGreaterThan("id", 7)
.orderByDescending("score", OrderingType.LONG)
.skip(from)
.take(count)
.toList();

请参阅文档链接:
https://ravendb.net/docs/article-page/5.1/java/indexes/querying/filtering#where---数字属性

id是文档id吗?因为这样就不必对其进行索引,只需向查询中添加"where"条件就可以了。请参阅:https://ravendb.net/docs/article-page/5.1/java/indexes/querying/basics#example-ii---过滤

顺便说一句,请查看中的代码示例https://demo.ravendb.net/
在每个示例中,单击"Java"选项卡以查看示例Java代码

最新更新