Cyphers MATCH
sætning giver dig mulighed for at finde data, der matcher et givet kriterium. Du kan bruge MATCH
at returnere dataene eller udføre en anden handling på dem.
MATCH
statement bruges til at matche et givet kriterium, men det returnerer faktisk ikke dataene. For at returnere data fra en MATCH
sætning, skal vi stadig bruge RETURN
klausul.
Hent en node
Her er et simpelt eksempel på brug af en MATCH
sætning for at hente en node:
MATCH (p:Person) WHERE p.Name = "Devin Townsend" RETURN p
WHERE
klausul fungerer på samme måde som SQL's WHERE
klausul, idet den giver dig mulighed for at indsnævre resultaterne ved at angive ekstra kriterier.
Du kan dog opnå det samme resultat uden at bruge en WHERE
klausul. Du kan også søge efter en node ved at angive den samme notation, som du brugte til at oprette noden.
Følgende kode giver de samme resultater som ovenstående udsagn:
MATCH (p:Person {Name: "Devin Townsend"}) RETURN p
Kørsel af en af ovenstående forespørgsler vil resultere i, at følgende node vises:
Du har måske bemærket, at et klik på en node udvider en ydre cirkel opdelt i tre sektioner - hver repræsenterer en anden mulighed:
Hvis du klikker på den nederste sektion, udvides nodens relationer:
Relationer
Du kan også krydse relationer med MATCH
udmelding. Faktisk er dette en af de ting, Neo4j er rigtig god til.
For eksempel, hvis vi ville finde ud af, hvilken kunstner der udgav albummet kaldet Heavy as a Really Heavy Thing , kunne vi bruge følgende forespørgsel:
MATCH (a:Artist)-[:RELEASED]->(b:Album) WHERE b.Name = "Heavy as a Really Heavy Thing" RETURN a
Dette vil returnere følgende node:
Du kan se, at det mønster, vi bruger i MATCH
udsagnet er næsten selvforklarende. Det matcher alle kunstnere, der udgav et album, der havde navnet Heavy as a Really Heavy Thing .
Vi bruger variabler (dvs. a
og b
), så vi kan henvise til dem senere i forespørgslen. Vi har ikke angivet nogen variabler for relationen, da vi ikke behøvede at henvise til relationen senere i forespørgslen.
Du vil måske også bemærke, at den første linje bruger det samme mønster, som vi brugte til at skabe forholdet i første omgang. Dette fremhæver enkeltheden af Cypher-sproget. Vi kan bruge de samme mønstre i forskellige sammenhænge (dvs. at skabe data og hente data).
Returner alle noder
Du kan returnere alle noder i databasen ved blot at udelade eventuelle filtreringsdetaljer. Derfor vil følgende forespørgsel returnere alle noder i databasen:
MATCH (n) RETURN n
Dette resulterer i, at alle vores noder returneres:
Du kan også klikke på Rækkerne ikon på siden for at vise dataene i rækkeformat:
Vær forsigtig, når du returnerer alle noder. At gøre dette på en stor database kan have store præstationsimplikationer. Det anbefales generelt at begrænse resultaterne for at undgå utilsigtede problemer.
Se "Begræns resultaterne" nedenfor.
Begræns resultaterne
Brug LIMIT
for at begrænse antallet af poster i outputtet. Det er en god idé at bruge dette, når du ikke er sikker på, hvor stort resultatsættet bliver.
Så vi kunne simpelthen tilføje LIMIT 5
til den forrige sætning for at begrænse output til 5 poster:
MATCH (n) RETURN n LIMIT 5