Neo4j - Guia rápido
Neo4j é o banco de dados gráfico de código aberto líder mundial, desenvolvido com a tecnologia Java. É altamente escalonável e sem esquemas (NoSQL).
O que é um banco de dados gráfico?
Um gráfico é uma representação pictórica de um conjunto de objetos onde alguns pares de objetos são conectados por links. É composto de dois elementos - nós (vértices) e relacionamentos (arestas).
O banco de dados de gráficos é um banco de dados usado para modelar os dados na forma de um gráfico. Aqui, os nós de um gráfico representam as entidades enquanto os relacionamentos representam a associação desses nós.
Bancos de dados gráficos populares
Neo4j é um banco de dados gráfico popular. Outros bancos de dados de gráfico são Oracle NoSQL Database, OrientDB, HypherGraphDB, GraphBase, InfiniteGraph e AllegroGraph.
Por que bancos de dados gráficos?
Hoje em dia, a maioria dos dados existe na forma de relacionamento entre diferentes objetos e, mais frequentemente, o relacionamento entre os dados é mais valioso do que os próprios dados.
Os bancos de dados relacionais armazenam dados altamente estruturados que possuem vários registros armazenando o mesmo tipo de dados, de forma que podem ser usados para armazenar dados estruturados e não armazenam as relações entre os dados.
Ao contrário de outros bancos de dados, os bancos de dados gráficos armazenam relacionamentos e conexões como entidades de primeira classe.
O modelo de dados para bancos de dados gráficos é mais simples em comparação com outros bancos de dados e podem ser usados com sistemas OLTP. Eles fornecem recursos como integridade transacional e disponibilidade operacional.
Banco de dados de gráficos RDBMS Vs
A seguir está a tabela que compara os bancos de dados relacionais e os bancos de dados gráficos.
Sr. Não | RDBMS | Banco de dados gráfico |
---|---|---|
1 | Mesas | Gráficos |
2 | Linhas | Nós |
3 | Colunas e Dados | Propriedades e seus valores |
4 | Restrições | Relacionamentos |
5 | Junta-se | Travessia |
Vantagens do Neo4j
A seguir estão as vantagens do Neo4j.
Flexible data model - O Neo4j fornece um modelo de dados flexível, simples e poderoso, que pode ser facilmente alterado de acordo com as aplicações e setores.
Real-time insights - O Neo4j fornece resultados com base em dados em tempo real.
High availability - O Neo4j está altamente disponível para aplicativos em tempo real de grandes empresas com garantias transacionais.
Connected and semi structures data - Usando o Neo4j, você pode facilmente representar dados conectados e semiestruturados.
Easy retrieval - Usando o Neo4j, você pode não apenas representar, mas também recuperar (percorrer / navegar) dados conectados com mais rapidez em comparação com outros bancos de dados.
Cypher query language- O Neo4j fornece uma linguagem de consulta declarativa para representar o gráfico visualmente, usando uma sintaxe ascii-art. Os comandos desta linguagem estão em formato legível por humanos e muito fáceis de aprender.
No joins - Usando o Neo4j, ele NÃO requer junções complexas para recuperar dados conectados / relacionados, pois é muito fácil recuperar seu nó adjacente ou detalhes de relacionamento sem junções ou índices.
Características do Neo4j
A seguir estão as características notáveis do Neo4j -
Data model (flexible schema)- O Neo4j segue um modelo de dados denominado modelo de gráfico de propriedade nativo. Aqui, o gráfico contém nós (entidades) e esses nós estão conectados uns aos outros (representados por relacionamentos). Nós e relacionamentos armazenam dados em pares de valores-chave conhecidos como propriedades.
No Neo4j, não há necessidade de seguir um esquema fixo. Você pode adicionar ou remover propriedades conforme a necessidade. Ele também fornece restrições de esquema.
ACID properties - Neo4j suporta regras ACID (atomicidade, consistência, isolamento e durabilidade) completas.
Scalability and reliability- Você pode dimensionar o banco de dados aumentando o número de leituras / gravações e o volume sem afetar a velocidade de processamento da consulta e a integridade dos dados. Neo4j também fornece suporte parareplication para segurança e confiabilidade dos dados.
Cypher Query Language- O Neo4j fornece uma linguagem de consulta declarativa poderosa conhecida como Cypher. Ele usa arte ASCII para representar gráficos. Cypher é fácil de aprender e pode ser usado para criar e recuperar relações entre dados sem usar consultas complexas como Joins.
Built-in web application - Neo4j fornece uma Neo4j Browseraplicativo da web. Usando isso, você pode criar e consultar seus dados gráficos.
Drivers - Neo4j pode trabalhar com -
API REST para trabalhar com linguagens de programação como Java, Spring, Scala etc.
Java Script para trabalhar com estruturas MVC de UI, como Node JS.
Ele oferece suporte a dois tipos de API Java: API Cypher e API Java Nativa para desenvolver aplicativos Java. Além disso, você também pode trabalhar com outros bancos de dados, como MongoDB, Cassandra, etc.
Indexing - Neo4j oferece suporte a índices usando o Apache Lucence.
Modelo de dados do gráfico de propriedades Neo4j
O Neo4j Graph Database segue o Property Graph Model para armazenar e gerenciar seus dados.
A seguir estão os principais recursos do modelo de gráfico de propriedade -
O modelo representa dados em nós, relacionamentos e propriedades
Propriedades são pares de valores-chave
Os nós são representados com um círculo e os relacionamentos são representados com as teclas de seta
Os relacionamentos têm direções: unidirecional e bidirecional
Cada relacionamento contém "Nó inicial" ou "Do Nó" e "Para o Nó" ou "Nó Final"
Ambos os nós e relacionamentos contêm propriedades
Relacionamentos conectam nós
Em Property Graph Data Model, os relacionamentos devem ser direcionais. Se tentarmos criar relacionamentos sem direção, isso gerará uma mensagem de erro.
Também no Neo4j, os relacionamentos devem ser direcionais. Se tentarmos criar relacionamentos sem direção, então o Neo4j irá lançar uma mensagem de erro dizendo que "Relacionamentos devem ser direcionais".
O Neo4j Graph Database armazena todos os seus dados em nós e relacionamentos. Não precisamos de nenhum banco de dados RRBMS adicional nem de nenhum banco de dados SQL para armazenar os dados do banco de dados Neo4j. Ele armazena seus dados em termos de gráficos em seu formato nativo.
Neo4j usa Native GPE (mecanismo de processamento de gráfico) para trabalhar com seu formato de armazenamento de gráfico nativo.
Os principais blocos de construção do modelo de dados Graph DB são -
- Nodes
- Relationships
- Properties
A seguir está um exemplo simples de um Gráfico de propriedades.
Aqui, representamos nós usando círculos. Os relacionamentos são representados por meio de setas. Os relacionamentos são direcionais. Podemos representar os dados do Node em termos de Propriedades (pares chave-valor). Neste exemplo, representamos cada propriedade Id de Nó dentro do Círculo de Nó.
Neste capítulo, discutiremos como instalar o Neo4j em seu sistema usando um arquivo exe.
Configuração do servidor de banco de dados Neo4j com arquivo exe do Windows
Siga as etapas abaixo para baixar o Neo4j em seu sistema.
Step 1 - Visite o site oficial do Neo4j usando https://neo4j.com/. Ao clicar, este link leva você para a página inicial do site neo4j.
Step 2- Conforme destacado na captura de tela acima, esta página tem um botão Download no lado superior direito. Clique.
Step 3- Isso o redirecionará para a página de downloads, onde você pode baixar a edição da comunidade e a edição corporativa do Neo4j. Baixe a edição comunitária do software clicando no botão respectivo.
Step 4- Isso o levará para a página onde você pode baixar a versão da comunidade do software Neo4j compatível com diferentes sistemas operacionais. Baixe o arquivo respectivo para o sistema operacional desejado.
Isso irá baixar um arquivo chamado neo4j-community_windows-x64_3_1_1.exe ao seu sistema, conforme mostrado na imagem a seguir.
Step 5 - Clique duas vezes no arquivo exe para instalar o Neo4j Server.
Step 6- Aceite o contrato de licença e prossiga com a instalação. Após a conclusão do processo, você pode observar que o Neo4j está instalado em seu sistema.
Iniciando o Servidor
Step 1 - Clique no menu Iniciar do Windows e inicie o servidor Neo4j clicando no atalho do menu Iniciar do Neo4j.
Step 2- Ao clicar no atalho, você terá uma janela para a edição da Comunidade Neo4j. Por padrão, ele seleciona c: \ Usuários \ [nome de usuário] \ Documentos \ Neo4j \ default.graphdb. Se desejar, você pode alterar seu caminho para um diretório diferente.
Step 3 - Clique no botão "Iniciar" para iniciar o servidor Neo4j.
Depois que o servidor é iniciado, você pode observar que o diretório do banco de dados é preenchido conforme mostrado na captura de tela a seguir.
Trabalhando com Neo4j
Conforme discutido nos capítulos anteriores, neo4j fornece um aplicativo de navegação embutido para funcionar com o Neo4j. Você pode acessar o Neo4j usando o URLhttp://localhost:7474/
O Neo4j Graph Database tem os seguintes blocos de construção -
- Nodes
- Properties
- Relationships
- Labels
- Navegador de Dados
Nó
O nó é uma unidade fundamental de um gráfico. Ele contém propriedades com pares de valores-chave, conforme mostrado na imagem a seguir.
Aqui, Node Name = "Employee" e contém um conjunto de propriedades como pares de valores-chave.
Propriedades
Propriedade é um par de valores-chave para descrever nós e relacionamentos do gráfico.
Key = Value
Onde a chave é uma string e o valor pode ser representado usando qualquer tipo de dados Neo4j.
Relacionamentos
Relacionamentos são outro grande bloco de construção de um banco de dados gráfico. Ele conecta dois nós conforme ilustrado na figura a seguir.
Aqui, Emp e Dept são dois nós diferentes. "WORKS_FOR" é uma relação entre os nós Emp e Dept.
Como denota, a marca de seta de Emp para Dept, esta relação descreve -
Emp WORKS_FOR Dept
Cada relacionamento contém um nó inicial e um nó final.
Aqui, "Emp" é um nó inicial e "Dept" é um nó final.
Como essa marca de seta de relacionamento representa um relacionamento do nó "Emp" para o nó "Dept", esse relacionamento é conhecido como um nó "Relacionamento de entrada" para "Dept" e "Relacionamento de saída" para o nó "Emp".
Como os nós, os relacionamentos também podem conter propriedades como pares de valores-chave.
Aqui, o relacionamento "WORKS_FOR" tem uma propriedade como par de valores-chave.
Id = 123
Ele representa um Id desse relacionamento.
Etiquetas
O rótulo associa um nome comum a um conjunto de nós ou relacionamentos. Um nó ou relacionamento pode conter um ou mais rótulos. Podemos criar novos rótulos para nós ou relacionamentos existentes. Podemos remover os rótulos existentes dos nós ou relacionamentos existentes.
No diagrama anterior, podemos observar que existem dois nós.
O nó do lado esquerdo tem um rótulo: "Emp" e o nó do lado direito tem um rótulo: "Dept".
O relacionamento entre esses dois nós também possui um rótulo: "WORKS_FOR".
Note - Neo4j armazena dados em Propriedades de Nós ou Relacionamentos.
Neo4j Data Browser
Assim que instalarmos o Neo4j, podemos acessar o Neo4j Data Browser usando o seguinte URL
http://localhost:7474/browser/
O Neo4j Data Browser é usado para executar comandos CQL e visualizar a saída.
Aqui, precisamos executar todos os comandos CQL no prompt de dólar: "$"
Digite comandos após o símbolo do dólar e clique no botão "Executar" para executar seus comandos.
Ele interage com o servidor de banco de dados Neo4j, recupera e exibe os resultados logo abaixo do prompt de dólar.
Use o botão "VI View" para ver os resultados em formato de diagramas. O diagrama acima mostra os resultados no formato "UI View".
Use o botão "Grid View" para ver os resultados em Grid View. O diagrama a seguir mostra os mesmos resultados no formato "Grid View".
Quando usamos "Grid View" para ver os resultados da consulta, podemos exportá-los para um arquivo em dois formatos diferentes.
CSV
Clique no botão "Exportar CSV" para exportar os resultados no formato de arquivo csv.
JSON
Clique no botão "Exportar JSON" para exportar os resultados no formato de arquivo JSON.
No entanto, se usarmos "UI View" para ver nossos resultados de consulta, podemos exportá-los para um arquivo em apenas um formato: JSON
CQL significa Cypher Query Language. Como o banco de dados Oracle tem linguagem de consulta SQL, o Neo4j tem CQL como linguagem de consulta.
Neo4j CQL
- É uma linguagem de consulta para o banco de dados gráfico Neo4j.
- É uma linguagem declarativa de correspondência de padrões.
- Segue a sintaxe do SQL.
- A sintaxe é muito simples e em formato legível por humanos.
Como Oracle SQL
O Neo4j CQL possui comandos para realizar operações de banco de dados.
O Neo4j CQL suporta muitas cláusulas como WHERE, ORDER BY, etc., para escrever consultas muito complexas de maneira fácil.
O Neo4j CQL suporta algumas funções como String, Agregação. Além deles, também suporta algumas Funções de Relacionamento.
Cláusulas Neo4j CQL
A seguir estão as cláusulas de leitura do Neo4j Cypher Query Llíngua -
Sr. Não | Leia as cláusulas | Uso |
---|---|---|
1 | PARTIDA | Esta cláusula é usada para pesquisar os dados com um padrão especificado. |
2 | PARTIDA OPCIONAL | Isso é o mesmo que combinar, a única diferença é que pode usar nulos no caso de partes ausentes do padrão. |
3 | ONDE | Este id de cláusula é usado para adicionar conteúdo às consultas CQL. |
4 | COMEÇAR | Esta cláusula é usada para encontrar os pontos de partida por meio dos índices legados. |
5 | CARREGAR CSV | Esta cláusula é usada para importar dados de arquivos CSV. |
A seguir estão as cláusulas de gravação do Neo4j Cypher Query Llíngua -
Sr. Não | Cláusula de escrita | Uso |
---|---|---|
1 | CRIO | Esta cláusula é usada para criar nós, relacionamentos e propriedades. |
2 | MERGE | Esta cláusula verifica se o padrão especificado existe no gráfico. Caso contrário, ele cria o padrão. |
3 | CONJUNTO | Esta cláusula é usada para atualizar rótulos em nós, propriedades em nós e relacionamentos. |
4 | EXCLUIR | Esta cláusula é usada para excluir nós e relacionamentos ou caminhos etc. do gráfico. |
5 | RETIRAR | Esta cláusula é usada para remover propriedades e elementos de nós e relacionamentos. |
6 | PARA CADA | Esta classe é usada para atualizar os dados em uma lista. |
7 | CRIAR ÚNICO | Usando as cláusulas CREATE e MATCH, você pode obter um padrão único combinando o padrão existente e criando o que falta. |
8 | Importando arquivos CSV com Cypher | Usando Carregar CSV, você pode importar dados de arquivos .csv. |
A seguir estão as cláusulas gerais do Neo4j Cypher Query Llíngua -
Sr. Não | Cláusulas Gerais | Uso |
---|---|---|
1 | RETORNA | Esta cláusula é usada para definir o que incluir no conjunto de resultados da consulta. |
2 | ORDENAR POR | Esta cláusula é usada para organizar a saída de uma consulta em ordem. É usado junto com as cláusulasRETURN ou WITH. |
3 | LIMITE | Esta cláusula é usada para limitar as linhas no resultado a um valor específico. |
4 | PULAR | Esta cláusula é usada para definir a partir de qual linha começar, incluindo as linhas na saída. |
5 | COM | Esta cláusula é usada para encadear as partes da consulta. |
6 | UNWIND | Esta cláusula é usada para expandir uma lista em uma sequência de linhas. |
7 | UNIÃO | Esta cláusula é usada para combinar o resultado de várias consultas. |
8 | LIGAR | Esta cláusula é usada para invocar um procedimento implantado no banco de dados. |
Funções Neo4j CQL
A seguir estão as funções CQL do Neo4j usadas com frequência -
Sr. Não | Funções CQL | Uso |
---|---|---|
1 | Corda | Eles são usados para trabalhar com literais String. |
2 | Agregação | Eles são usados para realizar algumas operações de agregação nos resultados da Consulta CQL. |
3 | Relação | Eles são usados para obter detalhes de relacionamentos, como startnode, endnode, etc. |
Discutiremos todos os comandos do Neo4j CQL, cláusulas e sintaxe de funções, uso e exemplos em detalhes nos capítulos subsequentes.
Tipos de dados Neo4j CQL
Esses tipos de dados são semelhantes à linguagem Java. Eles são usados para definir propriedades de um nó ou relacionamento.
Neo4j CQL suporta os seguintes tipos de dados -
Sr. Não | Tipo de dados CQL | Uso |
---|---|---|
1 | boleano | É usado para representar literais booleanos: verdadeiro, falso. |
2 | byte | É usado para representar inteiros de 8 bits. |
3 | baixo | É usado para representar inteiros de 16 bits. |
4 | int | É usado para representar inteiros de 32 bits. |
5 | grandes | É usado para representar inteiros de 64 bits. |
6 | flutuador | É usado para representar números de ponto flutuante de 32 bits. |
7 | em dobro | É usado para representar números de ponto flutuante de 64 bits. |
8 | Caracteres | É usado para representar caracteres de 16 bits. |
9 | Corda | É usado para representar Strings. |
Operadores CQL
A seguir está a lista de operadores suportados pela linguagem Neo4j Cypher Query.
Sr. Não | Tipo | Operadores |
---|---|---|
1 | Matemático | +, -, *, /,%, ^ |
2 | Comparação | +, <>, <,>, <=,> = |
3 | boleano | AND, OR, XOR, NOT |
4 | Corda | + |
5 | Lista | +, IN, [X], [X… ..Y] |
6 | Expressão regular | = - |
7 | Correspondência de cordas | COMEÇA COM, TERMINA COM, RESTRIÇÕES |
Operadores booleanos em Neo4j CQL
Neo4j suporta os seguintes operadores booleanos para usar na cláusula Neo4j CQL WHERE para suportar várias condições.
Sr. Não | Operadores booleanos | Descrição |
---|---|---|
1 | E | É uma palavra-chave CQL Neo4j para suportar a operação AND. É como o operador SQL AND. |
2 | OU | É uma palavra-chave CQL do Neo4j para suportar a operação OR. É como o operador SQL AND. |
3 | NÃO | É uma palavra-chave Neo4j CQL para suportar a operação NOT. É como o operador SQL AND. |
4 | XOR | É uma palavra-chave Neo4j CQL para suportar a operação XOR. É como o operador SQL AND. |
Operadores de comparação em Neo4j CQL
Neo4j oferece suporte aos seguintes operadores de comparação para usar na cláusula Neo4j CQL WHERE para condições de suporte.
Sr. Não | Operadores booleanos | Descrição |
---|---|---|
1 | = | É um operador Neo4j CQL "Igual a". |
2 | <> | É um operador Neo4j CQL "Diferente de". |
3 | < | É um operador Neo4j CQL "Menor que". |
4 | > | É um operador Neo4j CQL "Maior que". |
5 | <= | É um operador Neo4j CQL "Menor ou igual a". |
6 | > = | É um operador Neo4j CQL "Maior que ou igual a". |
Conforme discutido, um nó é um dado / registro em um banco de dados gráfico. Você pode criar um nó no Neo4j usando oCREATEcláusula. Este capítulo ensina como -
- Crie um único nó
- Crie vários nós
- Crie um nó com um rótulo
- Crie um nó com vários rótulos
- Crie um nó com propriedades
- Retornando o nó criado
Criação de um único nó
Você pode criar um nó no Neo4j simplesmente especificando o nome do nó que deve ser criado junto com a cláusula CREATE.
Sintaxe
A seguir está a sintaxe para criar um nó usando Cypher Query Language.
CREATE (node_name);
Note - O ponto e vírgula (;) é opcional.
Exemplo
A seguir está um exemplo de Cypher Query que cria um nó no Neo4j.
CREATE (sample)
Para executar a consulta acima, siga as seguintes etapas -
Step 1 - Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j conforme mostrado na imagem a seguir.
Step 2 - Abra seu navegador, copie e cole o seguinte URL na barra de endereço http://localhost:7474/. Isso lhe dará o aplicativo de navegador integrado do Neo4j com um prompt de dólar, conforme mostrado na captura de tela a seguir.
Step 3 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Verificação
Para verificar a criação do tipo de nó, execute a seguinte consulta no prompt de dólar.
MATCH (n) RETURN n
Essa consulta retorna todos os nós do banco de dados (discutiremos essa consulta em detalhes nos próximos capítulos).
Ao executar, esta consulta mostra o nó criado conforme mostrado na imagem a seguir.
Criação de vários nós
A cláusula de criação do Neo4j CQL também é usada para criar vários nós ao mesmo tempo. Para isso, é necessário passar os nomes dos nós a serem criados, separados por vírgula.
Sintaxe
A seguir está a sintaxe para criar vários nós usando a cláusula CREATE.
CREATE (node1),(node2)
Exemplo
A seguir está um exemplo de Cypher Query que cria vários nós no Neo4j.
CREATE (sample1),(sample2)
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Verificação
Para verificar a criação do nó, digite e execute a seguinte consulta no prompt de dólar.
MATCH (n) RETURN n
Essa consulta retorna todos os nós do banco de dados (discutiremos essa consulta em detalhes nos próximos capítulos).
Ao executar, esta consulta mostra o nó criado conforme mostrado na imagem a seguir.
Criando um nó com um rótulo
Um rótulo no Neo4j é usado para agrupar (classificar) os nós usando rótulos. Você pode criar um rótulo para um nó no Neo4j usando a cláusula CREATE.
Sintaxe
A seguir está a sintaxe para criar um nó com um rótulo usando Cypher Query Language.
CREATE (node:label)
Exemplo
A seguir está um exemplo de Cypher Query que cria um nó com um rótulo.
CREATE (Dhawan:player)
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Verificação
Para verificar a criação do nó, digite e execute a seguinte consulta no prompt de dólar.
MATCH (n) RETURN n
Essa consulta retorna todos os nós do banco de dados (discutiremos essa consulta em detalhes nos próximos capítulos).
Ao executar, esta consulta mostra o nó criado conforme mostrado na imagem a seguir.
Criação de um nó com vários rótulos
Você também pode criar vários rótulos para um único nó. Você precisa especificar os rótulos para o nó, separando-os com dois pontos “:”.
Sintaxe
A seguir está a sintaxe para criar um nó com vários rótulos.
CREATE (node:label1:label2:. . . . labeln)
Exemplo
A seguir está um exemplo de Cypher Query que cria um nó com vários rótulos no Neo4j.
CREATE (Dhawan:person:player)
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Verificação
Para verificar a criação do nó, digite e execute a seguinte consulta no prompt de dólar.
MATCH (n) RETURN n
Essa consulta retorna todos os nós do banco de dados (discutiremos essa consulta em detalhes nos próximos capítulos).
Ao executar, esta consulta mostra o nó criado conforme mostrado na imagem a seguir.
Criar Nó com Propriedades
Propriedades são os pares de valores-chave com os quais um nó armazena dados. Você pode criar um nó com propriedades usando a cláusula CREATE. Você precisa especificar essas propriedades separadas por vírgulas dentro dos colchetes “{}”.
Sintaxe
A seguir está a sintaxe para criar um nó com propriedades.
CREATE (node:label { key1: value, key2: value, . . . . . . . . . })
Exemplo
A seguir está um exemplo de Cypher Query que cria um nó com propriedades.
CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"})
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Verificação
Para verificar a criação do nó, digite e execute a seguinte consulta no prompt de dólar.
MATCH (n) RETURN n
Essa consulta retorna todos os nós do banco de dados (discutiremos essa consulta em detalhes nos próximos capítulos).
Ao executar, esta consulta mostra o nó criado conforme mostrado na imagem a seguir.
Retornando o Nó Criado
Ao longo do capítulo, usamos o MATCH (n) RETURN nconsulta para visualizar os nós criados. Esta consulta retorna todos os nós existentes no banco de dados.
Em vez disso, podemos usar a cláusula RETURN com CREATE para visualizar o nó recém-criado.
Sintaxe
A seguir está a sintaxe para retornar um nó no Neo4j.
CREATE (Node:Label{properties. . . . }) RETURN Node
Exemplo
A seguir está um exemplo de Cypher Query que cria um nó com propriedades e o retorna.
CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"}) RETURN Dhawan
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
No Noe4j, um relacionamento é um elemento com o qual conectamos dois nós de um gráfico. Esses relacionamentos têm direção, tipo e os padrões de forma dos dados. Este capítulo ensina como -
- Crie relacionamentos
- Crie uma relação entre os nós existentes
- Crie uma relação com rótulo e propriedades
Criando Relacionamentos
Podemos criar um relacionamento usando a cláusula CREATE. Especificaremos a relação dentro dos colchetes “[]” dependendo da direção da relação em que ela é colocada entre o hífen “-” e a seta “→”, conforme mostrado na sintaxe a seguir.
Sintaxe
A seguir está a sintaxe para criar um relacionamento usando a cláusula CREATE.
CREATE (node1)-[:RelationshipType]->(node2)
Exemplo
Em primeiro lugar, crie dois nós Ind e Dhawan no banco de dados, como mostrado abaixo.
CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"})
CREATE (Ind:Country {name: "India"})
Agora, crie um relacionamento chamado BATSMAN_OF entre esses dois nós como -
CREATE (Dhawan)-[r:BATSMAN_OF]->(Ind)
Finalmente, retorne ambos os nós para ver o relacionamento criado.
RETURN Dhawan, Ind
Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Criando um relacionamento entre os nós existentes
Você também pode criar um relacionamento entre os nós existentes usando o MATCH cláusula.
Sintaxe
A seguir está a sintaxe para criar um relacionamento usando a cláusula MATCH.
MATCH (a:LabeofNode1), (b:LabeofNode2)
WHERE a.name = "nameofnode1" AND b.name = " nameofnode2"
CREATE (a)-[: Relation]->(b)
RETURN a,b
Exemplo
A seguir está um exemplo de Cypher Query que cria um relacionamento usando a cláusula match.
MATCH (a:player), (b:Country) WHERE a.name = "Shikar Dhawan" AND b.name = "India"
CREATE (a)-[r: BATSMAN_OF]->(b)
RETURN a,b
Para executar a consulta acima, siga os seguintes passos.
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Criando uma relação com rótulo e propriedades
Você pode criar um relacionamento com rótulo e propriedades usando a cláusula CREATE.
Sintaxe
A seguir está a sintaxe para criar um relacionamento com rótulo e propriedades usando a cláusula CREATE.
CREATE (node1)-[label:Rel_Type {key1:value1, key2:value2, . . . n}]-> (node2)
Exemplo
A seguir está um exemplo de Cypher Query que cria uma relação com o rótulo e as propriedades.
MATCH (a:player), (b:Country) WHERE a.name = "Shikar Dhawan" AND b.name = "India"
CREATE (a)-[r:BATSMAN_OF {Matches:5, Avg:90.75}]->(b)
RETURN a,b
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Criando um caminho completo
No Neo4j, um caminho é formado usando relacionamentos contínuos. Um caminho pode ser criado usando a cláusula create.
Sintaxe
A seguir está a sintaxe para criar um caminho no Neo4j usando a cláusula CREATE.
CREATE p = (Node1 {properties})-[:Relationship_Type]->
(Node2 {properties})[:Relationship_Type]->(Node3 {properties})
RETURN p
Exemplo
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
O comando MERGE é uma combinação dos comandos CREATE e MATCH.
O comando Neo4j CQL MERGE procura um determinado padrão no gráfico. Se existir, ele retornará os resultados.
Se NÃO existir no gráfico, ele criará um novo nó / relacionamento e retornará os resultados.
Neste capítulo, você aprenderá como -
- Mesclar um nó com rótulo
- Mesclar um nó com propriedades
- OnCreate e OnMatch
- Unir um relacionamento
Sintaxe
A seguir está a sintaxe do comando MERGE.
MERGE (node: label {properties . . . . . . . })
Antes de prosseguir para os exemplos nesta seção, crie dois nós no banco de dados com os rótulos Dhawan e Ind. Crie um relacionamento do tipo “BATSMAN_OF” de Dhawan para Ind como mostrado abaixo.
CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"})
CREATE (Ind:Country {name: "India"})
CREATE (Dhawan)-[r:BATSMAN_OF]->(Ind)
Mesclando um nó com um rótulo
Você pode mesclar um nó no banco de dados com base no rótulo usando a cláusula MERGE. Se você tentar mesclar um nó com base no rótulo, o Neo4j verifica se existe algum nó com o rótulo fornecido. Caso contrário, o nó atual será criado.
Sintaxe
A seguir está a sintaxe para mesclar um nó com base em um rótulo.
MERGE (node:label) RETURN node
Exemplo 1
A seguir está um exemplo de consulta Cypher que mescla um nó no Neo4j (com base no rótulo). Quando você executa esta consulta, o Neo4j verifica se existe algum nó com o rótuloplayer. Caso contrário, ele cria um nó denominado “Jadeja” e o retorna.
Se existe algum nó com o rótulo fornecido, o Neo4j retorna todos eles.
MERGE (Jadeja:player) RETURN Jadeja
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Como você já criou um nó chamado “Dhawan” com o rótulo “jogador” no banco de dados, o Neo4j o retorna como mostrado na imagem a seguir.
Exemplo 2
Agora, tente mesclar um nó denominado “CT2013” com um rótulo denominado Torneio. Como não há nós com este rótulo, o Neo4j cria um nó com o nome fornecido e o retorna.
MERGE (CT2013:Tournament{name: "ICC Champions Trophy 2013"})
RETURN CT2013, labels(CT2013)
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Conforme discutido, uma vez que não há nenhum nó com o rótulo fornecido (Torneio). O Neo4j cria e retorna o nó especificado, conforme mostrado na captura de tela a seguir.
Mesclando um Nó com Propriedades
Você também pode mesclar um nó com um conjunto de propriedades. Se você fizer isso, o Neo4j procura uma correspondência igual para o nó especificado, incluindo as propriedades. Se não encontrar nenhum, ele cria um.
Sintaxe
A seguir está a sintaxe para mesclar um nó usando propriedades.
MERGE (node:label {key1:value, key2:value, key3:value . . . . . . . . })
Exemplo
A seguir está um exemplo de consulta Cypher para mesclar um nó usando propriedades. Esta consulta tenta mesclar o nó denominado “jadeja” usando propriedades e rótulo. Como não existe tal nó com o rótulo e as propriedades exatas, o Neo4j cria um.
MERGE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
RETURN Jadeja
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Conforme discutido, uma vez que não há nós com o rótulo e as propriedades especificadas, ele cria um, conforme mostrado na captura de tela a seguir.
OnCreate e OnMatch
Sempre que executamos uma consulta de mesclagem, um nó é correspondido ou criado. Usando on create e on match, você pode definir propriedades para indicar se o nó é criado ou correspondido.
Sintaxe
A seguir está a sintaxe de OnCreate e OnMatch cláusulas.
MERGE (node:label {properties . . . . . . . . . . .})
ON CREATE SET property.isCreated ="true"
ON MATCH SET property.isFound ="true"
Exemplo
A seguir está um exemplo de consulta Cypher que demonstra o uso de OnCreate e OnMatchcláusulas em Neo4j. Se o nó especificado já existir no banco de dados, o nó será correspondido e a propriedade com o par chave-valor isFound = "true" será criada no nó.
Se o nó especificado não existir no banco de dados, o nó será criado e, dentro dele, uma propriedade com um par de valores-chave isCreated = "true" será criada.
MERGE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
ON CREATE SET Jadeja.isCreated = "true"
ON MATCH SET Jadeja.isFound = "true"
RETURN Jadeja
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Conforme discutido, uma vez que não há nenhum nó com os detalhes especificados, Neo4j o criou junto com a propriedadeisFound como mostrado na imagem a seguir.
Unir um relacionamento
Assim como os nós, você também pode mesclar os relacionamentos usando a cláusula MERGE.
Exemplo
A seguir está um exemplo de consulta Cypher que mescla um relacionamento usando a cláusula MATCH no Neo4j. Esta consulta tenta fundir um relacionamento chamadoWINNERS_OF entre os nós “ind” (etiqueta: País e nome: Índia) e ICC13 (etiqueta: Torneio e nome: Troféu dos Campeões ICC 2013).
Como essa relação não existe, Neo4j cria uma.
MATCH (a:Country), (b:Tournament)
WHERE a.name = "India" AND b.name = "ICC Champions Trophy 2013"
MERGE (a)-[r:WINNERS_OF]->(b)
RETURN a, b
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Como a relação especificada não existe no banco de dados, o Neo4j cria uma conforme mostrado na imagem a seguir.
Da mesma forma, você pode mesclar relacionamentos múltiplos e relacionamentos não direcionados.
Usando a cláusula Set, você pode adicionar novas propriedades a um nó ou relacionamento existente e também adicionar ou atualizar valores de Propriedades existentes.
Neste capítulo, vamos discutir como -
- Definir uma propriedade
- Remover uma propriedade
- Defina várias propriedades
- Definir um rótulo em um nó
- Definir vários rótulos em um nó
Definir uma propriedade
Usando a cláusula SET, você pode criar uma nova propriedade em um nó.
Sintaxe
A seguir está a sintaxe para definir uma propriedade.
MATCH (node:label{properties . . . . . . . . . . . . . . })
SET node.property = value
RETURN node
Exemplo
Antes de prosseguir com o exemplo, primeiro crie um nó chamado Dhawan como mostrado abaixo.
CREATE (Dhawan:player{name: "shikar Dhawan", YOB: 1985, POB: "Delhi"})
A seguir está um exemplo de Cypher Query para criar uma propriedade chamada “highestscore” com o valor “187” .
MATCH (Dhawan:player{name: "shikar Dhawan", YOB: 1985, POB: "Delhi"})
SET Dhawan.highestscore = 187
RETURN Dhawan
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado no seguinte screnshot.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Aqui você pode observar que uma propriedade com um par de valores-chave highestscore / 187 é criada no nó denominado “Dhawan”.
Removendo uma Propriedade
Você pode remover uma propriedade existente passando NULL como valor para ele.
Sintaxe
A seguir está a sintaxe para remover uma propriedade de um nó usando a cláusula SET.
MATCH (node:label {properties})
SET node.property = NULL
RETURN node
Exemplo
Antes de prosseguir com o exemplo, primeiro crie um nó “jadeja” conforme mostrado abaixo.
Create (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
A seguir está um exemplo de Cypher Query que remove a propriedade chamada POB deste nó usando a cláusula SET conforme mostrado abaixo.
MATCH (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
SET Jadeja.POB = NULL
RETURN Jadeja
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Aqui você pode observar que a variável chamadaPOB Foi apagado.
Configurando Propriedades Múltiplas
Da mesma forma, você pode criar várias propriedades em um nó usando a cláusula Set. Para fazer isso, você precisa especificar esses pares de valores-chave com vírgulas.
Sintaxe
A seguir está a sintaxe para criar várias propriedades em um nó usando a cláusula SET.
MATCH (node:label {properties})
SET node.property1 = value, node.property2 = value
RETURN node
Exemplo
A seguir está um exemplo de Cypher Query que cria várias propriedades em um nó usando a cláusula SET no Neo4j.
MATCH (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988})
SET Jadeja.POB: "NavagamGhed", Jadeja.HS = "90"
RETURN Jadeja
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Aqui você pode observar que as propriedades chamadas POB e HS foram criadas.
Definir um rótulo em um nó
Você pode definir um rótulo para um nó existente usando a cláusula SET.
Sintaxe
A seguir está a sintaxe para definir um rótulo para um nó existente.
MATCH (n {properties . . . . . . . })
SET n :label
RETURN n
Exemplo
Antes de prosseguir com o exemplo, primeiro crie um nó “Anderson” conforme mostrado abaixo.
CREATE (Anderson {name: "James Anderson", YOB: 1982, POB: "Burnely"})
A seguir está um exemplo de Cypher Query para definir um rótulo em um nó usando a cláusula SET. Esta consulta adiciona o rótulo “jogador” ao nó Anderson e o retorna.
MATCH (Anderson {name: "James Anderson", YOB: 1982, POB: "Burnely"})
SET Anderson: player
RETURN Anderson
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Aqui você pode observar que o rótulo denominado “jogador” é adicionado ao nó.
Definir vários rótulos em um nó
Você pode definir vários rótulos para um nó existente usando a cláusula SET. Aqui você precisa especificar os rótulos, separando-os com dois pontos “:”.
Sintaxe
A seguir está a sintaxe para definir vários rótulos para um nó existente usando a cláusula SET.
MATCH (n {properties . . . . . . . })
SET n :label1:label2
RETURN n
Exemplo
Antes de prosseguir com o exemplo, primeiro crie um nó denominado “Ishant” conforme mostrado abaixo.
CREATE (Ishant {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})
A seguir está um exemplo de Cypher Query usado para criar vários rótulos em um nó usando a cláusula SET.
MATCH (Ishant {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})
SET Ishant: player:person
RETURN Ishant
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Aqui você pode observar que dois rótulos - pessoa e jogador - são adicionados ao nó denominadoIshant.
Você pode excluir nós e relacionamentos de um banco de dados usando a cláusula DELETE.
Excluindo todos os nós e relacionamentos
A seguir está a consulta para excluir todos os nós e os relacionamentos no banco de dados usando a cláusula DELETE.
Inquerir
MATCH (n) DETACH DELETE n
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Isso excluirá todos os nós e relacionamentos do banco de dados neo4j e o deixará vazio.
Excluindo um Nó Particular
Para excluir um determinado nó, você precisa especificar os detalhes do nó no lugar de “n” na consulta acima.
Sintaxe
A seguir está a sintaxe para excluir um nó específico do Neo4j usando a cláusula DELETE.
MATCH (node:label {properties . . . . . . . . . . })
DETACH DELETE node
Exemplo
Antes de prosseguir com o exemplo, crie um nó “Ishant” no banco de dados Neo4j como mostrado abaixo.
CREATE (Ishant:player {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})
A seguir está um exemplo de consulta Cypher que exclui o nó criado acima usando a cláusula DELETE.
MATCH (Ishant:player {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})
DETACH DELETE Ishant
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Aqui você pode observar que o nó especificado foi excluído.
A cláusula REMOVE é usada para remover propriedades e rótulos dos elementos do gráfico (nós ou relacionamentos).
A principal diferença entre os comandos Neo4j CQL DELETE e REMOVE é -
- A operação DELETE é usada para excluir nós e relacionamentos associados.
- A operação REMOVE é usada para remover rótulos e propriedades.
Removendo uma Propriedade
Você pode remover uma propriedade de um nó usando MATCH junto com a cláusula REMOVE.
Sintaxe
A seguir está a sintaxe para remover uma propriedade de um nó usando a cláusula REMOVE.
MATCH (node:label{properties . . . . . . . })
REMOVE node.property
RETURN node
Exemplo
Antes de prosseguir com o exemplo, crie um nó chamado Dhoni como mostrado abaixo.
CREATE (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
A seguir está um exemplo de consulta Cypher para remover o nó criado acima usando a cláusula REMOVE.
MATCH (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
REMOVE Dhoni.POB
RETURN Dhoni
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Aqui, você pode observar que o nó denominado POB foi excluído.
Removendo uma etiqueta de um nó
Semelhante à propriedade, você também pode remover um rótulo de um nó existente usando a cláusula remove.
Sintaxe
A seguir está a sintaxe para remover um rótulo de um nó.
MATCH (node:label {properties . . . . . . . . . . . })
REMOVE node:label
RETURN node
Exemplo
A seguir está um exemplo de consulta Cypher para remover um rótulo de um nó existente usando a cláusula remove.
MATCH (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
REMOVE Dhoni:player
RETURN Dhoni
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Aqui, você pode observar que o rótulo foi excluído do nó.
Removendo várias etiquetas
Você também pode remover vários rótulos de um nó existente.
Sintaxe
A seguir está a sintaxe para remover vários rótulos de um nó.
MATCH (node:label1:label2 {properties . . . . . . . . })
REMOVE node:label1:label2
RETURN node
Exemplo
Antes de prosseguir com o exemplo, crie um nó Ishant conforme mostrado abaixo.
CREATE (Ishant:player:person {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})
A seguir está um exemplo de Cypher Query para remover vários rótulos de um nó.
MATCH (Ishant:player:person {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})
REMOVE Ishant:player:person
RETURN Ishant
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Aqui, você pode observar que os rótulos especificados foram excluídos do nó.
o FOREACH A cláusula é usada para atualizar os dados em uma lista, sejam componentes de um caminho ou resultado de agregação.
Sintaxe
A seguir está a sintaxe da cláusula FOREACH.
MATCH p = (start node)-[*]->(end node)
WHERE start.node = "node_name" AND end.node = "node_name"
FOREACH (n IN nodes(p)| SET n.marked = TRUE)
Exemplo
Antes de prosseguir com o exemplo, crie um caminho p no banco de dados Neo4j conforme mostrado abaixo.
CREATE p = (Dhawan {name:"Shikar Dhawan"})-[:TOPSCORRER_OF]->(Ind{name:
"India"})-[:WINNER_OF]->(CT2013{name: "Champions Trophy 2013"})
RETURN p
A seguir está um exemplo de consulta Cypher que adiciona uma propriedade a todos os nós ao longo do caminho usando a cláusula FOREACH.
MATCH p = (Dhawan)-[*]->(CT2013)
WHERE Dhawan.name = "Shikar Dhawan" AND CT2013.name = "Champions Trophy 2013"
FOREACH (n IN nodes(p)| SET n.marked = TRUE)
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Verificação
Para verificar a criação do nó, digite e execute a seguinte consulta no prompt de dólar.
MATCH (n) RETURN n
Essa consulta retorna todos os nós do banco de dados (discutiremos essa consulta em detalhes nos próximos capítulos).
Ao executar, esta consulta mostra o nó criado conforme mostrado na imagem a seguir.
Neste capítulo, aprenderemos sobre a cláusula Match e todas as funções que podem ser realizadas usando esta cláusula.
Obtenha todos os nós usando a correspondência
Usando a cláusula MATCH do Neo4j, você pode recuperar todos os nós no banco de dados Neo4j.
Exemplo
Antes de prosseguir com o exemplo, crie 3 nós e 2 relacionamentos conforme mostrado abaixo.
CREATE (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
CREATE (Ind:Country {name: "India", result: "Winners"})
CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"})
CREATE (Ind)-[r1:WINNERS_OF {NRR:0.938 ,pts:6}]->(CT2013)
CREATE(Dhoni)-[r2:CAPTAIN_OF]->(Ind)
CREATE (Dhawan:player{name: "shikar Dhawan", YOB: 1995, POB: "Delhi"})
CREATE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
CREATE (Dhawan)-[:TOP_SCORER_OF {Runs:363}]->(Ind)
CREATE (Jadeja)-[:HIGHEST_WICKET_TAKER_OF {Wickets:12}]->(Ind)
A seguir está a consulta que retorna todos os nós no banco de dados Neo4j.
MATCH (n) RETURN n
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Obtendo todos os nós em um rótulo específico
Usando a cláusula match, você pode obter todos os nós sob um rótulo específico.
Sintaxe
A seguir está a sintaxe para obter todos os nós sob um rótulo específico.
MATCH (node:label)
RETURN node
Exemplo
A seguir está uma amostra de Cypher Query, que retorna todos os nós no banco de dados sob o rótulo player.
MATCH (n:player)
RETURN n
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Correspondência por relacionamento
Você pode recuperar nós com base no relacionamento usando a cláusula MATCH.
Sintaxe
A seguir está a sintaxe de recuperação de nós com base no relacionamento usando a cláusula MATCH.
MATCH (node:label)<-[: Relationship]-(n)
RETURN n
Exemplo
A seguir está um exemplo de Cypher Query para recuperar nós com base no relacionamento usando a cláusula MATCH.
MATCH (Ind:Country {name: "India", result: "Winners"})<-[: TOP_SCORER_OF]-(n)
RETURN n.name
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Excluir todos os nós
Você pode excluir todos os nós usando a cláusula MATCH.
Inquerir
A seguir está a consulta para excluir todos os nós no Neo4j.
MATCH (n) detach delete n
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
o OPTIONAL MATCH cláusula é usada para pesquisar o padrão descrito nela, enquanto usa nulos para as partes ausentes do padrão.
OPTIONAL MATCH é semelhante à cláusula match, a única diferença é que retorna nulo como resultado das partes ausentes do padrão.
Sintaxe
A seguir está a sintaxe de OPTIONAL MATCH com relacionamento.
MATCH (node:label {properties. . . . . . . . . . . . . .})
OPTIONAL MATCH (node)-->(x)
RETURN x
Exemplo
A seguir está um exemplo de Cypher Query que tenta recuperar as relações do nó ICCT2013. Como não há tais nós, ele retorna nulo.
MATCH (a:Tornament {name: "ICC Champions Trophy 2013"})
OPTIONAL MATCH (a)-->(x)
RETURN x
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Aqui você pode observar que, como não há correspondências para o padrão necessário, o Neo4j retornou nulo.
Como o SQL, o Neo4j CQL forneceu a cláusula WHERE no comando CQL MATCH para filtrar os resultados de uma consulta MATCH.
Sintaxe
A seguir está a sintaxe da cláusula WHERE.
MATCH (label)
WHERE label.country = "property"
RETURN label
Exemplo
Antes de prosseguir com o exemplo, crie cinco nós no banco de dados conforme mostrado abaixo.
CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"}
CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"}
CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222,
country:"Srilanka"})
CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"})
CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})
CREATE(Ind:Country {name: "India", result: "Winners"})
A seguir está um exemplo de Cypher Query que retorna todos os jogadores (nós) que pertencem ao país Índia usando a cláusula WHERE.
MATCH (player)
WHERE player.country = "India"
RETURN player
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Cláusula WHERE com várias condições
Você também pode usar a cláusula WHERE para verificar várias condições.
Sintaxe
A seguir está a sintaxe para usar a cláusula WHERE no Neo4j com várias condições.
MATCH (emp:Employee)
WHERE emp.name = 'Abc' AND emp.name = 'Xyz'
RETURN emp
Exemplo
A seguir está um exemplo de consulta Cypher que filtra os nós no banco de dados Neo4j usando duas condições.
MATCH (player)
WHERE player.country = "India" AND player.runs >=175
RETURN player
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Usando relação com cláusula Where
Você também pode usar a cláusula Where para filtrar os nós usando os relacionamentos.
Exemplo
Suponha que temos o seguinte gráfico no banco de dados.
A seguir está um exemplo de consulta Cypher para recuperar o artilheiro da Índia usando a cláusula WHERE conforme mostrado abaixo.
MATCH (n)
WHERE (n)-[: TOP_SCORER_OF]->( {name: "India", result: "Winners"})
RETURN n
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Aqui você pode observar que o Neo4j retornou o nó, que tem a relação TOP_SCORER_OF para o país com o nó de nome Índia.
Suponha que criamos um gráfico no banco de dados com os seguintes detalhes.
Contagem
o count() função é usada para contar o número de linhas.
Sintaxe
A seguir está a sintaxe da função de contagem.
MATCH (n { name: 'A' })-->(x)
RETURN n, count(*)
Exemplo
A seguir está um exemplo de consulta Cypher que demonstra o uso do count() função.
Match(n{name: "India", result: "Winners"})--(x)
RETURN n, count(*)
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Contagem de Grupo
o COUNT cláusula também é usada para contar os grupos de tipos de relacionamento.
Exemplo
A seguir está um exemplo de Cypher Query que conta e retorna o número de nós que participam de cada relação.
Match(n{name: "India", result: "Winners"})-[r]-(x)
RETURN type (r), count(*)
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
A cláusula RETURN é usada para retornar nós, relacionamentos e propriedades no Neo4j. Neste capítulo, vamos aprender como -
- Nós de retorno
- Retornar vários nós
- Relações de retorno
- Propriedades de retorno
- Retorna todos os elementos
- Retorna uma variável com o alias da coluna
Nós de retorno
Você pode retornar um nó usando a cláusula RETURN.
Sintaxe
A seguir está uma sintaxe para retornar nós usando a cláusula RETURN.
Create (node:label {properties})
RETURN node
Exemplo
Antes de prosseguir com o exemplo, crie 3 nós e 2 relacionamentos conforme mostrado abaixo.
Create (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
CREATE (Ind:Country {name: "India", result: "Winners"})
CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"})
CREATE (Ind)-[r1:WINNERS_OF {NRR:0.938 ,pts:6}]->(CT2013)
CREATE(Dhoni)-[r2:CAPTAIN_OF]->(Ind)
A seguir está um exemplo de Cypher Query que cria um nó chamado Dhoni e o retorna.
Create (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
RETURN Dhoni
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Retornando vários nós
Você também pode retornar vários nós usando a cláusula de retorno.
Sintaxe
A seguir está a sintaxe para retornar vários nós usando a cláusula return.
CREATE (Ind:Country {name: "India", result: "Winners"})
CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"})
RETURN Ind, CT2013
Exemplo
A seguir está um exemplo de Cypher Query para retornar vários nós usando a cláusula return.
CREATE (Ind:Country {name: "India", result: "Winners"})
CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"})
RETURN Ind, CT2013
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado. Aqui você pode observar que o Neo4j retornou 2 nós.
Relacionamentos de retorno
Você também pode retornar relacionamentos usando a cláusula Return.
Sintaxe
A seguir está a sintaxe para retornar relacionamentos usando a cláusula RETURN.
CREATE (node1)-[Relationship:Relationship_type]->(node2)
RETURN Relationship
Exemplo
A seguir está um exemplo de Cypher Query que cria dois relacionamentos e os retorna.
CREATE (Ind)-[r1:WINNERS_OF {NRR:0.938 ,pts:6}]->(CT2013)
CREATE(Dhoni)-[r2:CAPTAIN_OF]->(Ind)
RETURN r1, r2
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Propriedades de retorno
Você também pode retornar propriedades usando a cláusula RETURN.
Sintaxe
A seguir está uma sintaxe para retornar propriedades usando a cláusula RETURN.
Match (node:label {properties . . . . . . . . . . })
Return node.property
Exemplo
A seguir está um exemplo de Cypher Query para retornar as propriedades de um nó.
Match (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
Return Dhoni.name, Dhoni.POB
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Retornando todos os elementos
Você pode retornar todos os elementos no banco de dados Neo4j usando a cláusula RETURN.
Exemplo
A seguir está um exemplo de Cypher Query para retornar todos os elementos no banco de dados.
Match p = (n {name: "India", result: "Winners"})-[r]-(x)
RETURN *
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Retornando uma variável com um alias de coluna
Você pode retornar uma coluna específica com alias usando a cláusula RETURN no Neo4j.
Exemplo
A seguir está um exemplo de consulta Cypher que retorna o POB da coluna como Local de nascimento.
Match (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
Return Dhoni.POB as Place Of Birth
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Você pode organizar os dados do resultado em ordem usando a cláusula ORDER BY.
Sintaxe
A seguir está a sintaxe da cláusula ORDER BY.
MATCH (n)
RETURN n.property1, n.property2 . . . . . . . .
ORDER BY n.property
Exemplo
Antes de prosseguir com o exemplo, crie 5 nós no banco de dados Neo4j conforme mostrado abaixo.
CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"})
CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"})
CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, country:"Srilanka"})
CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"})
CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})
A seguir está um exemplo de Cypher Query que retorna os nós criados acima na ordem das execuções marcadas pelo jogador usando a cláusula ORDERBY.
MATCH (n)
RETURN n.name, n.runs
ORDER BY n.runs
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Ordenando Nós por Propriedades Múltiplas
Você pode organizar os nós com base em várias propriedades usando ORDEYBY cláusula.
Sintaxe
A seguir está a sintaxe para organizar os nós por várias propriedades usando a cláusula ORDERBY.
MATCH (n)
RETURN n
ORDER BY n.age, n.name
Exemplo
A seguir está um exemplo de Cypher Query que organiza os nós criados anteriormente neste capítulo com base nas propriedades - execuções e país.
MATCH (n)
RETURN n.name, n.runs, n.country
ORDER BY n.runs, n.country
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Nós de ordenação por ordem decrescente
Você pode organizar os nós em um banco de dados em ordem decrescente usando o ORDERBY cláusula.
Sintaxe
A seguir está a sintaxe para organizar os nós em um banco de dados.
MATCH (n)
RETURN n
ORDER BY n.name DESC
Exemplo
A seguir está um exemplo de consulta Cypher que organiza os nós em um banco de dados em ordem decrescente usando a cláusula ORDERBY.
MATCH (n)
RETURN n.name, n.runs
ORDER BY n.runs DESC
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
o limit cláusula é usada para limitar o número de linhas na saída.
Sintaxe
A seguir está a sintaxe da cláusula LIMIT.
MATCH (n)
RETURN n
ORDER BY n.name
LIMIT 3
Exemplo
Antes de prosseguir com o exemplo, crie 5 nós no banco de dados Neo4j conforme mostrado abaixo.
CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"})
CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"})
CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, country:"Srilanka"})
CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"})
CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})
A seguir está um exemplo de Cypher Query que retorna os nós criados acima em ordem decrescente e limita os registros no resultado a 3.
MATCH (n)
RETURN n.name, n.runs
ORDER BY n.runs DESC
LIMIT 3
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Limite com expressão
Você também pode usar a cláusula LIMIT com expressão.
Exemplo
A seguir está um exemplo de Cypher Query que limita os registros usando uma expressão.
MATCH (n)
RETURN n.name, n.runs
ORDER BY n.runs DESC
LIMIT toInt(3 * rand())+ 1
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
A cláusula SKIP é usada para definir de qual linha começar, incluindo as linhas na saída.
Exemplo
Antes de prosseguir com o exemplo, crie 5 nós conforme mostrado abaixo.
CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"})
CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"})
CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, country:"Srilanka"})
CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"})
CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})
A seguir está um exemplo de Cypher Query que retorna todos os nós no banco de dados, ignorando os primeiros 3 nós.
MATCH (n)
RETURN n.name, n.runs
ORDER BY n.runs DESC
SKIP 3
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Pular usando expressão
Você pode pular os registros de um resultado usando uma expressão.
Exemplo
A seguir está um exemplo de consulta Cypher que usa a cláusula SKIP com uma expressão.
MATCH (n)
RETURN n.name, n.runs
ORDER BY n.runs DESC
SKIP toInt (2*rand())+ 1
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Você pode encadear as artes de consulta usando a cláusula WITH.
Sintaxe
A seguir está a sintaxe da cláusula WITH.
MATCH (n)
WITH n
ORDER BY n.property
RETURN collect(n.property)
Exemplo
A seguir está um exemplo de consulta Cypher que demonstra o uso da cláusula WITH.
MATCH (n)
WITH n
ORDER BY n.name DESC LIMIT 3
RETURN collect(n.name)
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
A cláusula unfind é usada para desdobrar uma lista em uma sequência de linhas.
Exemplo
A seguir está um exemplo de consulta Cypher que desenrola uma lista.
UNWIND [a, b, c, d] AS x
RETURN x
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Como o SQL, o Neo4J CQL forneceu um conjunto de funções String para usá-los em consultas CQL para obter os resultados necessários.
Aqui, vamos discutir algumas das funções importantes e frequentemente usadas.
Lista de funções de string
A seguir está a lista de funções de String proeminentes no Neo4j.
Sr. Não | Descrição da função |
---|---|
1 | SUPERIOR É usado para transformar todas as letras em maiúsculas. |
2 | MAIS BAIXO É usado para transformar todas as letras em minúsculas. |
3 | SUBSTRING É usado para obter substring de uma determinada String. |
4 | Replace É usado para substituir uma substring por uma determinada substring de uma String. |
Como SQL, Neo4j CQL forneceu algumas funções de agregação para usar na cláusula RETURN. É semelhante à cláusula GROUP BY no SQL.
Podemos usar este comando RETURN + Aggregation Functions in MATCH para trabalhar em um grupo de nós e retornar algum valor agregado.
Lista de funções de AGREGAÇÃO
A seguir está a lista de funções de agregação no Neo4j.
Sr. Não | Descrição da função |
---|---|
1 | CONTAGEM Ele retorna o número de linhas retornadas pelo comando MATCH. |
2 | MAX Ele retorna o valor máximo de um conjunto de linhas retornadas pelo comando MATCH. |
3 | MIN Ele retorna o valor mínimo de um conjunto de linhas retornadas pelo comando MATCH. |
4 | SOMA Ele retorna o valor de soma de todas as linhas retornadas pelo comando MATCH. |
5 | AVG Ele retorna o valor médio de todas as linhas retornadas pelo comando MATCH. |
Em aplicativos de tempo real, devemos fazer backup de nosso banco de dados de aplicativos regularmente, para que possamos restaurar algumas condições de funcionamento em qualquer ponto de falha.
Esta regra é aplicável para bancos de dados RDBMS e NoSQL.
Nesta seção, discutiremos sobre duas tarefas importantes do DBA.
- Como fazer backup de um banco de dados Neo4j.
- Como restaurar o banco de dados Neo4j para um backup específico.
Note- Essas etapas são aplicáveis apenas ao sistema operacional Windows. Devemos usar tipos semelhantes de comandos para fazer as mesmas etapas em outros sistemas operacionais.
Backup de banco de dados Neo4j
Step 1 - Clique em "Comunidade Neo4j" usando o seguinte caminho -
Botão "Iniciar" do Windows → "Todos os programas" → "Comunidade Neo4j" → "Comunidade Neo4j"
Por padrão, ele seleciona c:\Users\[username]\Documents\Neo4j\default.graphdb. No entanto, se desejarmos, podemos alterar o caminho para um diretório diferente.
Step 2 - Aqui mudamos para nossa pasta de banco de dados Neo4j.
C: \ Ne04j2.0db
Step 3 - Clique no botão "Iniciar".
Assim que o servidor for iniciado, podemos observar que os arquivos do nosso banco de dados Neo4j são gerados em um diretório especificado.
Antes de fazer um backup do banco de dados, a primeira coisa que devemos fazer é desligar o servidor do banco de dados Neo4j.
Step 4 - Clique no botão "Parar" para encerrar o servidor.
Os arquivos do banco de dados Neo4j estão disponíveis em C: \ Ne04j2.0db
Step 5 - Abra o prompt de comando.
Step 6 - Crie uma pasta "Neo4jDbBackup-01" em C: \ Neo4j (pode ser qualquer local em seu sistema de arquivos).
mkdir C:\Neo4j\Neo4jDbBackup-01
Ele cria uma nova pasta "Neo4jDbBackup-01" no local do sistema de arquivos especificado "C: \ Neo4j \"
Step 7 - Digite o seguinte comando e pressione a tecla Enter.
copy C:\Ne04j2.0db C:\Neo4j\Neo4jDbBackup-01
Isso significa que nossos arquivos são copiados para a pasta de destino necessária. Acesse essa pasta e observe que a pasta contém nossos arquivos de banco de dados.
Step 8 - Use qualquer ferramenta de compressão / descompressão do Windows como WinZip, 7 Zip ou WinRAR para compactar nossa pasta de banco de dados.
Step 9- Agora nosso arquivo Neo4jDbBackup-01.zip foi criado. Se você tiver alguma restrição de memória em seu sistema de arquivos, remova a pasta "Neo4jDbBackup-01" em "C: \ Neo4j \"
Restauração de banco de dados Neo4j
Step 1- Desligue o servidor de banco de dados. Consulte as etapas anteriores para desligar o servidor.
Step 2 - Esvazie a pasta do banco de dados atual.
Step 3 - Use qualquer ferramenta de compressão / descompressão do Windows como WinZip, 7 Zip ou WinRar para descompactar nossa pasta de backup.
Step 4 - Abra o prompt de comando e execute o seguinte comando.
Copy C:\Neo4j\Neo4jDbBackup-01 C:\Ne04j2.0db
Agora podemos observar que nossa pasta de banco de dados contém arquivos de backup de trabalho
Step 5 - Inicie o servidor clicando no botão "Iniciar".
Step 6 - Execute alguns comandos MATCH + RETURN para verificar se restauramos nosso banco de dados corretamente.
O Neo4j SQL oferece suporte a índices em propriedades de nó ou relacionamento para melhorar o desempenho do aplicativo. Podemos criar índices em propriedades para todos os nós, que têm o mesmo nome de rótulo.
Podemos usar essas colunas indexadas no operador MATCH ou WHERE ou IN para melhorar a execução do comando CQL.
Neste capítulo, discutiremos como -
- Crie um índice
- Apagar um Índice
Criação de um índice
O Neo4j CQL fornece o comando "CREATE INDEX" para criar índices nas propriedades do nó ou relacionamento.
Sintaxe
A seguir está a sintaxe para criar um índice no Neo4j.
CREATE INDEX ON:label (node)
Exemplo
Antes de prosseguir com o exemplo, crie um nó Dhawan como mostrado abaixo.
CREATE (Dhawan:player{name: "shikar Dhawan", YOB: 1995, POB: "Delhi"})
A seguir está um exemplo de consulta do Cypher para criar um índice no nó Dhawan no Neo4j.
CREATE INDEX ON:player(Dhawan)
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado abaixo.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Excluindo um Índice
O Neo4j CQL fornece um comando "DROP INDEX" para eliminar um índice existente de uma propriedade de Nó ou Relações.
Sintaxe
A seguir está a sintaxe para criar um índice no Neo4j.
DROP INDEX ON:label(node)
Exemplo
A seguir está um exemplo de Cypher Query para criar um índice no nó denominado “Dhawan” no Neo4j.
DROP INDEX ON:player(Dhawan)
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
No banco de dados Neo4j, o comando CQL CREATE sempre cria um novo nó ou relacionamento, o que significa que mesmo que você use os mesmos valores, ele insere uma nova linha. De acordo com nossos requisitos de aplicativo para alguns nós ou relacionamentos, devemos evitar essa duplicação. Para isso, devemos usar algumas restrições de banco de dados para criar uma regra em uma ou mais propriedades de um nó ou relacionamento.
Como o SQL, o banco de dados Neo4j também suporta restrição UNIQUE nas propriedades do nó ou relacionamento. A restrição UNIQUE é usada para evitar registros duplicados e para impor a regra de integridade de dados.
Criar restrição UNIQUE
O Neo4j CQL fornece o comando "CREATE CONSTRAINT" para criar restrições exclusivas nas propriedades do nó ou relacionamento.
Sintaxe
A seguir está a sintaxe para criar uma restrição UNIQUE no Neo4j.
MATCH (root {name: "Dhawan"})
CREATE UNIQUE (root)-[:LOVES]-(someone)
RETURN someone
Exemplo
Antes de prosseguir com o exemplo, crie 4 nós conforme mostrado abaixo.
CREATE(Dhawan:player{id:001, name: "shikar Dhawan", YOB: 1995, POB: "Delhi"})
CREATE(Jonathan:player {id:002, name: "Jonathan Trott", YOB: 1981, POB: "CapeTown"})
CREATE(Sangakkara:player {id:003, name: "Kumar Sangakkara", YOB: 1977, POB: "Matale"})
CREATE(Rohit:player {id:004, name: "Rohit Sharma", YOB: 1987, POB: "Nagpur"})
CREATE(Virat:player {id:005, name: "Virat Kohli", YOB: 1988, POB: "Delhi"})
A seguir está um exemplo de Cypher Query para criar uma restrição ÚNICA no ID da propriedade usando Neo4j.
CREATE CONSTRAINT ON (n:player) ASSERT n.id IS UNIQUE
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.
Verificação
Agora, tente adicionar outro nó com um valor de id redundante. Aqui, estamos tentando criar um nó com id002.
CREATE (Jadeja:player {id:002, name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
Se você executar esta consulta, receberá uma mensagem de erro, conforme mostrado na imagem a seguir.
Já discutimos a criação de operações de restrição UNIQUE com exemplos no capítulo anterior. Neste capítulo, discutiremos a eliminação da operação de restrição UNIQUE com exemplos.
O Neo4j CQL fornece o comando "DROP CONSTRAINT" para excluir a restrição Exclusiva existente de um nó ou propriedade de relacionamento.
Sintaxe
A seguir está a sintaxe para eliminar uma restrição UNIQUE no Neo4j.
DROP CONSTRAINT ON (node:label)
ASSERT node.id IS UNIQUE
Exemplo
A seguir está um exemplo de Cypher Query para remover a restrição UNIQUE na propriedade id.
DROP CONSTRAINT ON (n:player)
ASSERT n.id IS UNIQUE
Para executar a consulta acima, siga as seguintes etapas -
Step 1- Abra o aplicativo de desktop Neo4j e inicie o servidor Neo4j. Abra o aplicativo de navegador integrado do Neo4j usando o URLhttp://localhost:7474/ como mostrado na imagem a seguir.
Step 2 - Copie e cole a consulta desejada no prompt de dólar e pressione o botão play (para executar a consulta) destacado na imagem a seguir.
Resultado
Ao executar, você obterá o seguinte resultado.