$gt behaves like $gte when using sort with multiple fields

Abierto
#9,056 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
javascript
Área
databases

Línea de trabajo

Comienza ejecutando la reproducción en JavaScript contra la consulta find de PouchDB con el índice compuesto age/name, comparando los resultados ordenados y sin ordenar. Sigue el recorrido de la consulta que gestiona $gt con múltiples campos de ordenación; se considera terminado cuando la consulta ordenada excluye el documento con age-25 y la regresión reportada está cubierta por una prueba.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

While migrating from CouchDB to PouchDB, I have encountered a potential bug in PouchDB where the behavior of $gt seems to change when a sort field is added to a find query. Without the sort field, $gt works as expected, but when a sort is applied, it behaves like $gte, returning additional documents.

Here is a minimal code example:

const db = new PouchDB("users");
await db.createIndex({
  index: { fields: ["age", "name"] },
});
await db.bulkDocs([
  {
    name: "Lisa",
    age: 31,
  },
  {
    name: "John",
    age: 25,
  },
]);

// Query without sorting
const { docs: docsWithoutSort } = await db.find({
  selector: {
    age: {
      $gt: 25,
    },
  },
});
console.log("Without sorting:", docsWithoutSort.length); // ✅ Expected: 1

// Query with sorting
const { docs: docsWithSort } = await db.find({
  selector: {
    age: {
      $gt: 25,
    },
  },
  sort: [{ age: "desc" }, { name: "desc" }],
});
console.log("With sorting:", docsWithSort.length); // ❌ Expected: 1, Actual: 2
Lenguaje dominante
JavaScript
Estrellas
17.6k
Forks
1.5k
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/pouchdb

Todos los issues de apache/pouchdb

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.