Consulta SQL++ / N1QL

Consulta de intervalos de datas em matrizes de documentos JSON incorporados. Um exemplo simples usando N1QL, Nodejs e Docker

A consulta e a indexação de arrays de documentos é um dos recursos mais avançados do Couchbase. Encontrar entradas de matriz dentro de um intervalo de datas específico é um requisito comum. Considere o seguinte caso de uso.

História do usuário: "Quero indexar uma matriz de histórico de contas incorporada em documentos no meu banco de dados para que eu possa realizar uma consulta de intervalo para entradas de matriz em um intervalo de datas específico."

Considere a seguinte estrutura json:

Tenho uma matriz chamada accountHistory que pode incluir um número 0-N de entradas. Se eu quiser consultar um determinado intervalo de datas, posso fazer isso facilmente definindo um índice secundário no campo data campo.

Criei uma entrada de índice exclusiva usando DISTINTO para cada data em cada registro accountHistory. Isso significa que todos os documentos no cluster que têm uma matriz de accountHistory serão incluídas em meu índice, desde que a entrada accountHistory tenha um campo chamado "data". É possível que eu tenha vários tipos de itens na matriz accountHistory e só quero que os itens que tenham um campo de data sejam incluídos. Se não houver um campo de data, o indexador não incluirá essa entrada no índice. Agora posso incluir intervalos de datas em meu predicado de consulta:

Usei um dos meus outros recursos favoritos do N1QL na consulta: INÚTIL. Isso me permite moldar o JSON e incluir campos de nível de documento raiz em meus resultados. Na minha consulta, cada entrada retornada incluirá as informações do histórico da conta que estão dentro do intervalo de datas do meu predicado. Também quero que o endereço de e-mail do documento de onde ele veio também seja incluído, e não quero ter que escrever uma lógica adicional de análise de JSON para descascar isso em meu aplicativo. Esse é o poder de usar unnest. A consulta retorna o seguinte:

Experimente: O Docker é minha maneira favorita de criar um ambiente de desenvolvimento. Um repositório fácil de usar para os exemplos acima está no github: n1ql-query-nodejs . Ele usa o docker-compose para criar dois serviços:

  1. Um serviço de cluster do Couchbase de nó único.
  2. Um serviço nodejs para provisionar o cluster do Couchbase com 250.000 perfis de usuário e índices para vários exemplos, incluindo consultas de intervalo de datas para matrizes de documentos.
Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Todd Greenstein

Todd Greenstein é arquiteto de soluções na Couchbase. Todd é especializado em design de API, arquitetura, modelagem de dados, desenvolvimento em nodejs e golang.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.