tutorial pricing lite espaƱol nosql couchbase couchbase-view

nosql - pricing - Vistas compuestas en couchbase



couchbase vs mongodb (1)

Soy nuevo en Couchbase y estoy luchando para obtener un índice compuesto para hacer lo que quiero. El caso de uso es este:

  • Tengo un conjunto de "Enumeraciones" almacenadas como documentos
  • Cada uno tiene un campo "last_updated" que, como habrás adivinado, almacena la última vez que se actualizó el campo
  • Quiero poder mostrar solo las enumeraciones que se han actualizado desde una fecha determinada, pero todavía ordenar la lista por el nombre de la enumeración

Creé una vista de Couchbase como esta:

function (doc, meta) { var time_array; if (doc.doc_type === "enum") { if (doc.last_updated) { time_array = doc.last_updated.split(/[- :]/); } else { time_array = [0,0,0,0,0,0]; } for(var i=0; i<time_array.length; i++) { time_array[i] = parseInt(time_array[i], 10); } time_array.unshift(meta.id); emit(time_array, null); }

}

Tengo un registro que no tiene el campo last_updated establecido y, por lo tanto, tiene su tiempo. Los campos están todos configurados en cero. Pensé que como primera prueba podría filtrar ese resultado y puse lo siguiente:

startkey = ["a",2012,0,0,0,0,0] endkey = ["Z",2014,0,0,0,0,0]

Si bien la lista está ordenada por la ''id'', ¡no está filtrando nada! ¿Alguien puede decirme lo que estoy haciendo mal? ¿Hay una mejor vista compuesta para lograr estos resultados?


En couchbase cuando consulta la vista por la clave de inicio - endkey, no puede filtrar los resultados por 2 o más propiedades. Couchbase tiene solo un índice, por lo que filtrará los resultados solo por el primer parámetro. Por lo tanto, su consulta será idéntica a la consulta con:

startkey = ["a"] endkey = ["Z"]

Aquí hay un enlace para completar la respuesta de Filipe Manana por qué no se puede filtrar por esas fechas.

Aquí hay una cita de esto:

Para las claves compuestas (matrices), los elementos se comparan de izquierda a derecha y la comparación finaliza tan pronto como un elemento es diferente del elemento correspondiente en la otra tecla (igual que sucede al comparar cadenas a la memcmp () o strcmp ()) .

Por lo tanto, si desea tener una vista que filtre por fecha, la matriz de fechas debe ir primero en la clave compuesta.