Tengo objetos con campos score e id . Necesito obtener una cantidad de estos objetos de from to from + count , que se ordenan por score de campo en orden descendente. Dentro de cada rango igual, necesito obtener un objeto con un valor específico de id en la parte superior de este rango, si existe.
Ejemplo:
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 de valor específico = 7, from = 0, count = 2
Resultado Esperado:
1. score = 30, id = 9 2. score = 20, id = 7 <--- my specific value on top of equal range, where score = 20Escribo consulta simple:
final List<SomeClass> players = session.query(SomeClass.class, SomeIndexClass.class) .orderByDescending("score", OrderingType.LONG) .skip(from) .take(count) .toList(); Pero esto no tiene en cuenta las condiciones con id de valor específico. ¿Cómo puedo hacerlo?
Si tiene este campo de id indexado en su índice, entonces puede agregar una condición whereGreaterThan en su consulta, para filtrar aquellas identificaciones que son mayores que '7'
Así que la consulta sería algo como:
final List<SomeClass> players = session.query(SomeClass.class, SomeIndexClass.class) .whereGreaterThan("id", 7) .orderByDescending("score", OrderingType.LONG) .skip(from) .take(count) .toList(); Ver enlace de documentación:
https://ravendb.net/docs/article-page/5.1/java/indexes/querying/filtering#where---numeric-property
¿Es id el id del documento? porque entonces no tiene que estar indexado, debería funcionar simplemente agregando la condición 'dónde' a la consulta. Consulte: https://ravendb.net/docs/article-page/5.1/java/indexes/querying/basics#example-ii---filtering
Por cierto, consulte los ejemplos de código en https://demo.ravendb.net/
En cada muestra, haga clic en la pestaña 'Java' para ver el código Java de muestra .