我有带有字段score
和id
的对象。我需要从from
到from + 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代码。