2017-06-25 5 views
1

Ich habe ein Problem mit Neo4j, Chiffre Sprache ...in Neo4j

Ich habe diese Art von Knoten: Film

{ 
    "overview":"An Amazon princess comes to the world of Man to become 
    the greatest of the female superheroes.", 
    "actors":[ 
    "Gal Gadot", 
    "Chris Pine", 
    "Connie Nielsen", 
    "Robin Wright", 
    "Danny Huston"], 
    "original_title":"Wonder Woman", 
    "runtime":141, 
    "title":"Wonder Woman" 

}

Schauspieler

{ 
"birthday":"1985-04-30", 
"place_of_birth":"Rosh Ha'ayin, Israel", 
"popularity":54.444332, 
"name":"Gal Gadot" 
}, 

Ich würde eine Beziehung "ACTED_IN" zwischen Actor a erstellen nd Movie, und ich würde das für jeden Akteur im Array "actors" tun.

Dies ist der Befehl:

MATCH (f:Movie), (a:Actors) 
FOREACH (n IN f.actors | CREATE (f)-[:ACTED_IN]->(a)) 

aber ich weiß nicht, wo die "WHERE-Bedingung" setzen ... jeweils Elemente in Array Schauspieler = Actors.name.

Vielen Dank für die Hilfe.

Antwort

2

Sie brauchen keine FOREACH, um es zu tun. Ändern Sie Ihre Anfrage an:

MATCH (f:Movie) 
UNWIND f.actors as names 
MATCH (a:Actors {name:names}) 
CREATE (f)-[:ACTED_IN]->(a) 

Das heißt: MATCH alle Filme und verwenden UNWIND die Liste der Namen in eine Folge von Zeilen zu transformieren. Danach, MATCH Schauspieler nach Namen und erstellen Sie die Beziehungen zwischen dem Film und den passenden Schauspielern.

+0

Danke Kumpel! – randy192

+0

Gern geschehen! –