2014-09-02 3 views
0

J'essaye d'obtenir un csv dans Neo4j. Comme il se compose d'entrées de journal, je voudrais connecter les nœuds avec un NEXT-pointeur/relation lorsque les journaux correspondants ont été créés à des moments ultérieurs.Créer des relations entre les nœuds consécutifs (sur l'attribut date) dans Neo4j

LOAD CSV WITH HEADERS FROM 'http://localhost/Export.csv' AS line 
CREATE (:Entry { date: line[0], ...}) 

MATCH (n) 
RETURN n 
ORDER BY n:date 


MATCH (a:Entry),(b:Entry),(c:Entry) 
WITH p AS min(b:date) 
WHERE a:date < b:date AND c.date = p 
CREATE (a)-[r:NEXT]->(c) 

Les quatre dernières lignes ne fonctionnent cependant pas. Ce que j'essaie, c'est d'obtenir la première entrée 'c' du groupe d'entrées 'b' avec un horodatage plus grand que 'a'. Est-ce que quelqu'un pourrait m'aider?

Répondre

1

Je ne sais pas si j'ai bien compris votre question: vous avez un fichier csv contenant des enregistrements de journal avec un horodatage. Chaque ligne contient un enregistrement. Vous souhaitez interconnecter les événements pour former une liste liée en fonction d'un horodatage?

Dans ce cas, je partagerai le processus en deux étapes:

  1. utilisant LOAD CSV créer un nœud avec une propriété data pour chaque ligne
  2. connecter ensuite les entrées à l'aide par exemple une déclaration de chiffrement comme ceci:

.

MATCH (e:Entry) 
WITH e ORDER BY e.date DESC 
WITH collect(e) as entries 
FOREACH(i in RANGE(0, length(entries)-2) | 
    FOREACH(e1 in [entries[i]] | 
    FOREACH(e2 in [entries[i+1]] | 
     MERGE (e1)-[:NEXT]->(e2)))) 
+0

Merci, Stefan, cela a résolu mon problème. Je ne vais probablement pas apprendre autour de Cypher correctement ... – Damian

Questions connexes