filtrer les relations sur une propriété multivaluée

22 views
Skip to first unread message

PrBifidus

unread,
Feb 1, 2017, 4:04:31 AM2/1/17
to Neo4jFr
Bonjour à tous,

Je le précise tout de suite, je débute avec Neo4j et cypher. ;-)

J'ai un graphe qui comporte dont les relations comportent une propriété "groupe" qui est un tableau de chaines qui peut contenir de 1 ou plusieurs valeurs (par exemple ['gold','silver','copper']).
Je cherche à définir les paths qui passent uniquement par les relations qui contiennent une valeur précise (par exemple 'gold') mais je n'y parviens pas...

Sans le filtre sur la propriété groupe, j'obtiens ce graphe-là  (le chemin en jaune est celui que je devrais obtenir après filtrage sur la propriété "groupe" avec la valeur 'gold')


La requête de ce graphe est la suivante :

MATCH (a:pricelist)-[r*]->(b:column)
where b.moq <= 290
return a,r,b

J'ai essayé d'utiliser filter(), all() et même extract() mais je n'arrive à rien...
Pourriez-vous m'indiquer comment gérer ce type de cas ?

Merci d'avance pour votre aide.


Auto Generated Inline Image 1

Benoît Simard

unread,
Feb 1, 2017, 5:25:06 AM2/1/17
to PrBifidus, Neo4jFr
Bonjour,

Est-ce que cette requête vous convient : 

MATCH p=shortestpath((a:pricelist)-[r*]->(b:column))
WHERE 
b.moq <= 290 AND
all(x IN r WHERE 'gold' IN x.groupe)
RETURN p

Sincèrement

PrBifidus

unread,
Feb 1, 2017, 7:31:11 AM2/1/17
to Neo4jFr
Merci Benoît.

J'avais déjà essayé de faire cette requête, et le graphe résultant ne semblait pas correct. C'est encore la cas maintenant :

MAIS, sur un autre post, quelqu'un avait signalé que le graphe montrait plusd en choses que ce que remontait la requête en réalité. Et c'est bien le cas ici...
Si je désactive l'auto-complete, les relations qui ne matchent pas disparaissent !



Mais je n'avais pas le réflexe de vérifier les data. Je me fiais au graphe...
Quand on regarde les lignes renvoyées, on voit bien qu'aucune relation qui ne contient pas 'gold' n'apparait, même quandl'auto-complete est activé (ce qui est le cas par défaut).

En tous cas, je n'étais pas à côté de la plaque, et ça me rassure un peu. Merci encore de cette mise au point.
Je poursuis mon projet.
Auto Generated Inline Image 1
Auto Generated Inline Image 2
Reply all
Reply to author
Forward
0 new messages