Cypher Neo4J - CAS de l'Expression avec FUSION
Je suis en train de mettre en œuvre la logique de Monogramme où, basée sur une condition particulière (CASE
Déclaration), je voudrais créer des nœuds et de relations; le code ci-dessous est
MATCH (g:Game)-[:PLAYER]->(u:User)-[r1:AT]->(b1:Block)-[:NEXT]->(b2:Block)
WHERE g.game_id='G222' and u.email_id = '[email protected]' and b1.block_id='16'
SET r1.status='Skipped', r1.enddate=20141225
WITH u, b2,b1, g, r1
SET b1.test = CASE b2.fork
WHEN 'y' THEN
MERGE (u)-[r2:STAGE {startdate:20141225, enddate:'99999999', status:'InProgress'}]->(b2 {fork:'fail'}) RETURN 1
ELSE
MERGE (u)-[r2:STAGE {startdate:20141225, enddate:'99999999', status:'InProgress'}]->(b2) RETURN 2
END
WITH u, g
MATCH (u)-[:TIME]->(h:Time)<-[:TIME]-(g)
SET h.after = 0
SET h.before = h.before + 1
Dans cette requête, il y a un merge
de la déclaration dans le WHEN 'y' THEN
, cette requête renvoie une erreur:
D'entrée non valide ']':: espace ou une relation structure (ligne 7, colonne 82)
"MERGE (u)-[r2:STADE {date de début:20141225, date de fin:'99999999', status:'en cours'}]->(b2 {fourche:'fail'}) RETURN 1"
Fondamentalement, je suis en train de créer une relation basée sur une propriété, c'est à dire un MERGE
dans un CASE
déclaration, j'ai essayé différentes manières de le faire fonctionner comme faire un retour de sorte que les cas où les rendements de la valeur etc. mais rien n'a fonctionné jusqu'à présent.
Quel pourrait être le problème avec cette requête?
OriginalL'auteur deepesh | 2014-12-20
Vous devez vous connecter pour publier un commentaire.
Faire conditionnelles opérations d'écriture, vous devez utiliser le
FOREACH
truc. À l'aide deCASE
vous retourner un élément de tableau ou d'un vide.FOREACH
parcourt laCASE
expression et, par conséquent, conditionnellement exécute l'action. Si vous souhaitez unELSE
partie comme bien, vous devez avoir une autreFOREACH
à l'aide de l'inverse de la condition dans laCASE
. Comme un exemple, au lieu deutilisation
Voir aussi Mark post de blog sur ce.
Tour de Nice, mais pouvez-vous expliquer quel est le sens de
THEN [1] ELSE []
, et qu'est-ce queignoreMe
(désolé, je ne pouvais pas vous ignorer)?lire la Marque du blog du lien ci-dessus.
Pas de mise à jour dans le Chiffre qui nous permet d'oublier au sujet de ce hack? J'aimerais vraiment lire que cette réponse est obsolète aujourd'hui en 2018.
OriginalL'auteur Stefan Armbruster
Résolu le problème comme ci-dessous
c'est à dire utilisé en CAS de création d'un mannequin tableau qui a en quelque sorte mannequin d'éléments correspondant au nombre de matchs et ensuite utiliser une boucle FOREACH pour parcourir le résultat.
Encore une fois, merci Stefan pour l'idée...
Deepesh
OriginalL'auteur deepesh