GKyle
GKyle

Reputation: 679

How to create a relationship to existing nodes based on a condition of matching properties

In Neo4j, I am trying to load a CSV file whilst creating a relationship between nodes based on the condition that a certain property is matched.

My Cypher code is:

LOAD CSV WITH HEADERS FROM "file:C:/Users/George.Kyle/Simple/Simple scream v3.csv" AS
csvLine
MATCH (g:simplepages { page: csvLine.page}),(y:simplepages {pagekeyword: csvLine.keyword} )
MATCH (n:sensitiveskin)
WHERE g.keyword = n.keyword
CREATE (f)-[:_]->(n)

You can see I am trying to create a relationship between 'simplepages' and 'sensitiveskin' based on their keyword properties being the same.

The query is executing but relationships won't form.

What I hope for is that when I execute a query such as

MATCH (n:sensitiveskin) RETURN n LIMIT 25 

You will see all nodes (both sensitive skin and simple pages) with auto-complete switched on.

Upvotes: 1

Views: 710

Answers (1)

cybersam
cybersam

Reputation: 66989

CREATE (f)-[:_]->(n) is using an f variable that was not previously defined, so it is creating a new node (with no label or properties) instead, and then creating a relationship from that new node. I think you meant to use either g or y instead of f. (Probably y, since you don't otherwise use it?)

Upvotes: 1

Related Questions