Consulta SQL++ / N1QL

Consulta de intervalos de fechas en matrices de documentos JSON incrustados. Un ejemplo sencillo con N1QL, Nodejs y Docker

Consultar e indexar arrays de documentos es una de las características más potentes de Couchbase. Encontrar entradas en un array dentro de un rango de fechas específico es un requerimiento común. Considera el siguiente caso de uso.

Historia de usuario: "Quiero indexar una matriz de historial de cuentas incrustada dentro de los documentos de mi base de datos para poder realizar una consulta de rango para las entradas de la matriz dentro de un intervalo de fechas específico."

Considere la siguiente estructura json:

Tengo un array llamado accountHistory que podría incluir 0-N número de entradas. Si quiero consultar un determinado intervalo de fechas, puedo hacerlo fácilmente definiendo un índice secundario en el campo fecha campo.

He creado una entrada de índice única utilizando DISTINTO para cada fecha en cada entrada de accountHistory. Esto significa que cada documento en el cluster que tiene un array de accountHistory se incluirán en mi índice siempre que la entrada accountHistory tenga un campo llamado "fecha". Es posible que tenga varios tipos de elementos en la matriz accountHistory y sólo quiero que se incluyan los elementos que tengan un campo de fecha. Si no hay ningún campo de fecha, el indizador no incluirá esa entrada en el índice. Ahora puedo incluir rangos de fechas en mi predicado de consulta:

He utilizado una de mis otras características favoritas de N1QL en la consulta: UNNEST. Me permite dar forma al JSON e incluir campos de nivel de documento raíz en mis resultados. En mi consulta, cada entrada devuelta incluirá la información del historial de la cuenta que esté dentro del intervalo de fechas de mi predicado. También quiero que se incluya la dirección de correo electrónico del documento del que procede, y no quiero tener que escribir lógica de análisis JSON adicional para desgranarla en mi aplicación. Ese es el poder de usar unnest. La consulta devuelve lo siguiente:

Pruébalo: Docker es mi forma favorita de crear un entorno de desarrollo. Un repositorio fácil de usar para los ejemplos anteriores está en github: n1ql-query-nodejs . Utiliza docker-compose para construir dos servicios:

  1. Un servicio de clúster Couchbase de nodo único.
  2. Un servicio nodejs para aprovisionar el clúster Couchbase con 250.000 perfiles de usuario e índices para varios ejemplos, incluyendo consultas de rango de fechas para matrices de documentos.
Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Todd Greenstein

Todd Greenstein es Arquitecto de Soluciones en Couchbase. Todd está especializado en diseño de APIs, arquitectura, modelado de datos y desarrollo en nodejs y golang.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.