04 neo4j Flashcards
:clear
equivalente a cls
match (anyX) return anyX
match (anyX) return anyX limit 666
retorna tudo da database
retorna no máximo 666 nodos, todas relações entre os 666
(node) [relation]
1) match (x1)–(x2) return x1, x2 limit 1
2) match (x1)-[y]-(x2) return x1, y, x2 limit 1
3) match (x1)-[y]-(x2)
return x1, y, x2
limit 1
returna um unico nodo x1 com conexao com nodo x2
retorna com mais detalhes
3 = 2
match (x1)-[y]->(x2)
return x1, y, x2
limit 1
Observar seta
match (ator:Person)-[relação:ACTED_IN]->(filme:Movie)
return ator, relação, filme
limit 5
retorna 5 relações em que uma Person Acted_In a Movie
match (ator:Person)-[relação:ACTED_IN | DIRECTED]->(filme:Movie)
return ator, relação, filme
limit 10
retorna 10 relações em que uma Person Acted_In OR Directed a Movie
match (filme:Movie)
return filme.title
limit 1
Retorna somente a propertie title de um Movie
match (filme:Movie)
match (diretor:Person)-[:DIRECTED]->(filme)
match (diretor)-[:ACTED_IN]->(filme)
return filme.title, diretor.name
retorna o title do movie e o name da Person que dirirgiu e atuou no filme em questão
match (filme:Movie) optional match (diretor:Person)-[:DIRECTED]->(filme)
retorna todos os filmes da database, naqueles em que o diretor não é também ator, o campo diretor name fica “null”, caso tenha dirigido e atuado aparece o nome dele.
match (pa:Person)-[:HAS_CONTACT]->(pb:Person)-[:HAS_CONTACT]->(pc:Person)
where pa <> pc
return pa.name, pb.name, pc.name
limit 1
retorna os nomes das pessoas pa, pb, pc, sendo pa diferente de pc, em que pa tem contato de pb e pb tem contato de pc
match (p1:Person)-[:HAS_CONTACT]->(p2:Person) optional match (p2)-[:DIRECTED]->(filme:Movie) return p1.name, p2.name, filme.title
limite de linhas do neo4j é 1000
Retorna as Persons p1 que tem contato com as Persons p2, se essa pessoa dirigiu algum filme, aparece o nome de todos os filmes, caso não tenha dirigido, aparece null
match (x {name: ‘Tom Hanks’, born: 1956})
return x
match (x:Person)
where x.name = ‘Tom Hanks’ and x.born = 1956
return x
Sinônimos, Where é melhor
Retorna o nodo em que o nome é Tom Hanks e o Ano de Nascimento é 1956
neo4j é case sensitive
sim
match (x:Person)
where x.born <> 1956
return x
Retorna as pessoas que não foram nascidas em 1956
> =, >, <=,
match (x:Person)
where x.name >= ‘T’
return x
Retorna pessoas cujos nomes começam com T ou letra após no alfabeto
match (x:Person)
where x.born = 1956 or x.born = 1957 or x.born = 1958
return x
match (x:Person)
where x.born in [1956, 1957, 1958]
return x
retorna pessoas que nasceram em 1956, 1957 ou 1958
Sinônimos
match (x:Person)
where x.born >= 1950 and x.born < 1960
return x
retorna pessoas que nasceram entre 1950 e 1959 (incluindo os dois anos)
match (x:Person) where not (x.born >= 1950 and x.born < 1960) return count(x)
retorna quantas pessoas nasceram 1949 ou antes OU 1960 ou depois
match (pessoa:Person)–>(filme:Movie)
where filme.title = ‘Unforgiven’ and not (pessoa)-[:DIRECTED]->(filme)
return pessoa, filme
retorna as pessoas que têm alguma relação com o filme Unforgiven exceto ser diretor
AND
OR
IN
NOT
Booleans
match (pessoa:Person)–>(filme:Movie)
where filme.title = ‘Unforgiven’ and not (pessoa)-[:DIRECTED]->(filme)
return pessoa, filme
retorna as pessoas que têm alguma relação com o filme Unforgiven exceto ser diretor
match (filme:Movie)
where filme.title =~ ‘The.*’
return filme.title
match (filme:Movie)
where filme.title =~ ‘.The.’
return filme.title
match (filme:Movie)
where filme.title =~ ‘The .*’
return filme.title
match (filme:Movie)
where filme.title =~ ‘.+The .*’
return filme.title
retorna todos os filmes que começam com The
retorna bla bla Their além do The no início do título e no meio
retorna se The tem espaço depois (não retorna Their por exemplo)
.+ significa que nao pode ser a primeira palavra, tem que ser no meio
match (valueX:typeX)
where valueX.KeyX =~ ‘(?i).stringX.’
return valueX.KeyX
(?i) faz virar case insensitive
match (ator:Person)-[papel:ACTED_IN]->(filme:Movie)
where filme.title = ‘Top Gun’
return ator.name as Ator, papel.earnings as Ganhos
order by papel.earnings desc
skip 3
limit 2
pode escrever descending no lugar de desc
retorna o nome dos atores de Top Gun e quanto cada um ganhou
tabela em ordem descendente de valores
pula os 3 que mais ganharam
retorna do 4 ao 8o (5)
Resultado será uma tabela com 1a coluna Ator e 2a coluna Ganhos
match (tom:Person{name: “Tom Hanks”})
match (filme:Movie)
match (tom)-[:HAS_CONTACT]->(ator:Person)
match (ator)-[papel:ACTED_IN]->(filme)
where ator.born >= 1960 and papel.earnings > 10000000
return ator.name as ContactName, ator.born as Born, papel.earnings as Earnings
order by papel.earnings desc
Retorna todos os atores que o Tom Hanks tem contato e que foram nascidos em 1960 ou depois e que já gamharam mais de 10 milhões por um único filme
Contatos organizados em ordem descendente de ganhos, renomeadas as colunas para ContactName, Born e Earnings