Instruções para usar o Cypher

1. Introdução

1.1 Comandos e funções comumente usados

A linguagem de consulta Cypher também é chamada de CQL.

Os comandos comumente usados ​​são os seguintes:

comando CQL efeito uso
CRIAR criar Criar nós, relacionamentos e atributos
CORRESPONDER corresponder Recupere dados sobre nós, relacionamentos e propriedades
RETORNAR retornar retornar resultado da consulta
ONDE onde Forneça condições para filtrar e recuperar dados
EXCLUIR excluir Excluir nós e relacionamentos
REMOVER remover Excluir atributos de nós e relacionamentos
ORDENAR POR classificado por Classificar dados recuperados
DEFINIR Grupo Adicionar ou atualizar tags

As funções comumente usadas em CQL são as seguintes:

Função de lista personalizada uso
Corda corda Eles são usados ​​para usar strings literais
Agregação polimerização Eles são usados ​​para executar algumas operações agregadas nos resultados da consulta CQL
Relação relação Eles são usados ​​para obter os detalhes do relacionamento, como startnode, endnode, etc.

2. Descrição dos comandos mais usados

2.1 Comando CRIAR

2.1.1 Criar um nó sem atributos

node-name é o nome do nó e label-name é o nome do rótulo do nó.

CREATE (<node-name>:<label-name>)

2.1.2 Criar um nó com atributos

Propertyn-name é o nome da propriedade do nó criado e Propertyn-Value é o valor da propriedade do nó criado.

CREATE (
   <node-name>:<label-name>
   { 	
      <Property1-name>:<Property1-Value>
      ........
      <Propertyn-name>:<Propertyn-Value>
   }
)

2.2 Comando CORRESP

O comando MATCH é usado para buscar dados sobre nós, relacionamentos e atributos do banco de dados.

MATCH 
(
   <node-name>:<label-name>
)

O comando MATCH geralmente é usado junto com o comando RETURN.

2.3 Comando RETURN

O comando RETURN é usado para recuperar propriedades de nós e associações.

RETURN 
   <node-name>.<property1-name>,
   ........
   <node-name>.<propertyn-name>

Exemplos de comandos MATCH e RETURN:

CREATE (t: test {name:"xzw", sex:"m", loc: "QD"})
MATCH (t: test)
RETURN t.name,t.sex

2.4 Relacionamento

Com base na direcionalidade, os relacionamentos do Neo4j são divididos em dois tipos principais: unidirecional e bidirecional.

2.4.1 Criar um relacionamento sem atributos

relacionamento-nome é o nome do relacionamento e relacionamento-rótulo-nome é o nome do rótulo do relacionamento. A cláusula return na sintaxe acima não é necessária.

CREATE  
   (<node1-label-name>:<node1-name>)-
   [<relationship-label-name>:<relationship-name>]->
   (<node1-label-name>:<node1-name>)
RETURN <relationship-label-name>

Exemplo de relação:

CREATE (f1:Favorite1)-
		[like:LIKES]->
		(f2:Favorite2)
RETURN like

2.4.2 Criar um relacionamento com atributos

CREATE  
	(<node1-label-name>:<node1-name>{<define-properties-list>})-
	[<relationship-label-name>:<relationship-name>{<define-properties-list>}]
	->(<node1-label-name>:<node1-name>{<define-properties-list>})
RETURN <relationship-label-name>
CREATE 		
	(v1:Video1{title:"Action1",updated_by:"A",uploaded_date:"10/10/2020"})
-
	[movie:ACTION_MOVIES{rating:1}]
	->(v2:Video2{title:"Action2",updated_by:"X",uploaded_date:"12/12/2020"}) 
MATCH (v1:Video1)-[movie:ACTION_MOVIES]->(v2:Video2) 
RETURN movie

2.5.1 Operadores booleanos

operador booleano descrever
E É uma palavra-chave Neo4j CQL que suporta operações AND
OU É uma palavra-chave Neo4j CQL para suportar a operação OR
NÃO É uma palavra-chave Neo4j CQL para suportar a operação NOT
XOR É uma palavra-chave Neo4j CQL que suporta operação XOR

2.5.2 Operadores de comparação

operador booleano descrever
= É o operador Neo4j CQL "igual a"
<> É um operador Neo4j CQL "diferente de"
< É um operador Neo4j CQL "menor que"
> É um operador Neo4j CQL "maior que"
<= É um operador Neo4j CQL "diferente ou igual a"
>= É um operador Neo4j CQL "maior ou igual a"

2.5.3 Crie um relacionamento usando a cláusula WHERE

MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>) 
WHERE <condition>
CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name>
       {<relationship-properties>}]->(<node2-label-name>) 

Exemplo:

MATCH (c:Customer),(f:Fav) 
WHERE c.id = "1" AND f.id= "1" 
CREATE (c)-[r:Relat{location:"QD"}]->(f) 
RETURN r

2.6 Comando EXCLUIR

Exclui um nó e nós e relacionamentos relacionados.

2.6.1 Excluir Nó

DELETE <node-name-list>

Exemplo:

MATCH (p:People) DELETE p

2.6.2 Excluir nós e relacionamentos

DELETE <node1-name>,<node2-name>,<relationship-name>

Você pode excluir todos os nós e relacionamentos no banco de dados com o seguinte comando:

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

2.7 Comando REMOVE

Remova um atributo ou rótulo de um nó ou relacionamento existente. Vale a pena observar que os comandos DELETE e REMOVE devem ser usados ​​com o comando MATCH.

REMOVE <property-name-list>/<label-name-list> 
 
其中,<property-name-list>是一个属性列表,其用法如下:
 
<node-name>.<property1-name>,
<node-name>.<property2-name>, 
.... 
<node-name>.<propertyn-name> 
 
<label-name-list>它是一个标签列表,其用法如下:
 
<node-name>:<label2-name>, 
.... 
<node-name>:<labeln-name> 

2.8 Comando SET

O comando SET é usado para adicionar ou atualizar valores de atributos para nós ou relacionamentos existentes

SET  <property-name-list>
 
其中,<property-name-list>是一个属性列表,其语法如下:
 
<node-label-name>.<property1-name>,
<node-label-name>.<property2-name>, 
.... 
<node-label-name>.<propertyn-name> 

2.9 Comando ORDER BY

Neo4j CQL fornece a cláusula "ORDER BY" no comando MATCH para classificar os resultados retornados pela consulta MATCH. Por padrão, ele classifica as linhas em ordem crescente.

ORDER BY  <property-name-list>  [DESC]	 
 
其中,<property-name-list>是属性列表,其语法如下:
 
<node-label-name>.<property1-name>,
<node-label-name>.<property2-name>, 
.... 
<node-label-name>.<propertyn-name> 

2.10 Comando UNIÃO

Ele combina e retorna linhas comuns de ambos os conjuntos de resultados em um conjunto de resultados, não retorna linhas duplicadas de dois nós. Semelhante ao SQL, UNION ALL retorna todos os dados.

<MATCH Command1>
   UNION
<MATCH Command2>

2.11 Comandos LIMIT e SKIP

Comando LIMIT para filtrar ou limitar o número de linhas retornadas por uma consulta, ele apara os resultados na parte inferior do conjunto de resultados da consulta CQL.

LIMIT <number>
-- 如果我们要修整CQL查询结果集顶部的结果,那么我们应该使用SKIP命令。--
SKIP <number>

2.12 comando MERGE

O comando MERGE é uma combinação do comando CREATE e do comando MATCH. Ele procura no grafo um determinado padrão e se existir retorna o resultado, se não existir no grafo cria um novo nó/relacionamento e retorna o resultado.

MERGE (<node-name>:<label-name>
{
   <Property1-name>:<Pro<rty1-Value>
   .....
   <Propertyn-name>:<Propertyn-Value>
})

2.13 valores NULL

Neo4j CQL trata valores nulos como valores ausentes ou indefinidos para propriedades de nós ou relacionamentos. Quando criamos um nó com um nome de rótulo de nó existente, mas não especificamos seu valor de propriedade, ele criará um novo nó com valor de propriedade NULL.

2.14 Comando IN

Assim como o SQL, o Neo4j CQL fornece um operador IN para fornecer uma coleção de valores a um comando CQL.

IN[<Collection-of-values>]

3. Descrição das funções comumente usadas

3.1 Funções de string

Assim como o SQL, o Neo4J CQL fornece um conjunto de funções String para obter os resultados desejados nas consultas CQL. A lista de funções de string comumente usadas é a seguinte:

Função descrever
SUPERIOR É usado para mudar todas as letras para maiúsculas
MAIS BAIXO É usado para mudar todas as letras para minúsculas
SUBSTRING É usado para obter a substring da String fornecida
SUBSTITUIR É usado para substituir uma substring de uma string

3.1.1 Função SUPERIOR

Converta letras em maiúsculas, a sintaxe é:

UPPER (<input-string>)

onde, pode ser um nome de propriedade de um nó ou relacionamento de um banco de dados Neo4J.

3.1.2 Função BAIXAR

Converta letras em minúsculas, a sintaxe é:

LOWER (<input-string>)

3.1.3 Função SUBSTRING

Função de interceptação de string, o intervalo de interceptação é fechado à esquerda e aberto à direita, a sintaxe é a seguinte:

SUBSTRING(<input-string>,<startIndex> ,<endIndex>)

3.2 Função de agregação AGREGAÇÃO

Neo4j CQL fornece algumas funções agregadas usadas na cláusula RETURN, que é semelhante à cláusula GROUP BY no SQL.

função de agregação descrever
CONTAR Ele retorna o número de linhas retornadas pelo comando MATCH
MAX Ele retorna o valor máximo de um conjunto de linhas retornadas pelo comando MATCH
MIN Retorna o valor mínimo de um conjunto de linhas retornado pelo comando MATCH
SOMA Ele retorna a soma de todas as linhas retornadas pelo comando MATCH
AVG Ele retorna a média de todas as linhas retornadas pelo comando MATCH

3.2.1 Função CONTAGEM

Ele pega o resultado da cláusula MATCH e conta o número de linhas presentes no resultado e retorna essa contagem. Sua sintaxe é a seguinte:

COUNT(<value>)

3.2.2 Função MAX

A função de valor máximo, a sintaxe é:

MAX(<property-name>)

3.2.3 Função MIN

A função mínima, a sintaxe é:

MIN(<property-name>)

3.2.4 Função AVG

Função média, a sintaxe é:

AVG(<property-name>)

3.2.5 Função SOMA

Função de soma, a sintaxe é:

SUM(<property-name>)

3.3 Funções relacionais

O Neo4j CQL fornece um conjunto de funções de relacionamento para conhecer os detalhes de um relacionamento enquanto obtém detalhes como nó inicial, nó final, etc.

Função descrever
STARTNODE É usado para conhecer o nó inicial do relacionamento
ENDNODE É usado para conhecer o nó final do relacionamento
EU IA É usado para saber o ID do relacionamento
TIPO É usado para saber o TIPO de uma relação na representação de string

Quarto, cypher importa dados do tipo csv

4.1 Breves passos

  1. Certifique-se de ter criado os tipos apropriados de nó e relacionamento em seu banco de dados Neo4j.

  2. Tenha seu arquivo CSV pronto. Coloque o arquivo csv a ser importado no diretório de importação:

    1. Certifique-se de que as colunas no arquivo correspondam às propriedades do nó e do tipo de relacionamento.
    2. 如果导入的csv文件中有中文,需要先将格式转换成UTF-8格式,否则会乱码
    3. 用NotePad++,editplus等文本编辑器打开csv文件,然后另存为,选择UTF-8编码,就可以了。
  3. 导入实体:

    • name.csv

      charatername
      azula
      aang
      zuko
      ...
      
      ##导入实体
      LOAD CSV WITH HEADERS FROM "file:///name.csv" AS row merge (d:name{name:row.charatername})
      
    • nation.csv

      nationname
      firenation 
      watertribe 
      ...
      
      ##导入实体
      LOAD CSV WITH HEADERS FROM "file:///nation.csv" AS row merge (d:nation{name:row.nationname})
      
  4. 导入关系:relation.csv

    name relation nation
    azula include firenation
    zuko include firenation
    katara include watertribe
    ##导入关系第一种方法:
    LOAD CSV WITH HEADERS FROM "file:///relation.csv" AS row  
    match (from:name{name:row.charatername}),(to:nation{name:row.nationname})  
    merge (from)-[r:relation{property:row.relation}]->(to)
    
  5. 运行Cypher查询以导入数据

4.2 高级步骤

CSV 文件首行是字段名,对于 neo4j 来说,其实是属性对应的列,假设我们有如下 CSV 实体数据文件:

Id,Name,Location,Email,BusinessType
1,Neo4j,San Mateo,[email protected],P
2,AAA,,[email protected],
3,BBB,Chicago,,G

由于 CSV 文件首行是字段名,则要加上 WITH HEADERS,并通过 MERGE 定义真实要设置的属性名和属性值,示例如下:

//  跳过 NULL 值
LOAD CSV WITH HEADERS FROM 'file:///companies.csv' AS row
WITH row WHERE row.Id IS NOT NULL
MERGE (c:Company {companyId: row.Id});

//  clear data
MATCH (n:Company) DELETE n;

//  为 NULL 值设置默认值
LOAD CSV WITH HEADERS FROM 'file:///companies.csv' AS row
MERGE (c:Company {companyId: row.Id, hqLocation: coalesce(row.Location, "Unknown")})

//  clear data
MATCH (n:Company) DELETE n;

//  设置空字符串为 NULL 值
LOAD CSV WITH HEADERS FROM 'file:///companies.csv' AS row
MERGE (c:Company {companyId: row.Id})
SET c.emailAddress = CASE trim(row.Email) WHEN "" THEN null ELSE row.Email END

如果 CSV 中有一个字段是要拆分的 item 列表,则可以使用 Cypher 的 split() 函数来分隔单元格中的数组。

条件转换可以通过 CASE

// clear data
MATCH (n:Company) DELETE n;

//set businessType property based on shortened value in CSV
LOAD CSV WITH HEADERS FROM 'file:///companies.csv' AS row
WITH row WHERE row.Id IS NOT NULL
WITH row,
(CASE row.BusinessType
 WHEN 'P' THEN 'Public'
 WHEN 'R' THEN 'Private'
 WHEN 'G' THEN 'Government'
 ELSE 'Other' END) AS type
MERGE (c:Company {companyId: row.Id, hqLocation: coalesce(row.Location, "Unknown")})
SET c.emailAddress = CASE trim(row.Email) WHEN "" THEN null ELSE row.Email END
SET c.businessType = type
RETURN *

Acho que você gosta

Origin blog.csdn.net/twi_twi/article/details/130672138
Recomendado
Clasificación