Bonjour,
J'essaye de trouver le moyen d'exclure des nœuds à travers une requête cypher. Mon graph se compose:
- d'utilisateur,
- de compétence,
- de score,
- de question,
- d'approbation
Dans la pratique:
- Un utilisateur a des compétences,
- Une compétence a des scores - en relation avec des questions ((compétence) -> (scores) -> (questions))
- Une approbation est une relation utilisateur/score ((utilisateur) <- (réponse) <- (scores) <- (...))
- Une question est en relation avec des scores ((question) -> (score) ... (question) -> (score) ... (question) -> (score), etc...)
J'aimerais récupérer toutes les questions pour un utilisateur dont-il n'a pas encore eu de score. Je pensais que je pouvais faire:
MATCH (u:`Graph::User`),
u<-[rel1:`USERS`]-(s:`Graph::SoftSkill`),
s-[rel2:`SOFT_SKILLS`]->(k:`Graph::SoftSkillScoring`),
k-[rel3:`ANSWER`]->(q:`Graph::Question`)
WHERE (u.uid='e7bazec-ea14-4reb-55cd-56c922945c6a') AND NOT (u<-[:ENDORSEMENT]-()<-[:ENDORSEMENT]->(k))
RETURN q, u
Le résultat obtenu inclut toujours les questions dont l'utilisateur a déjà des scores - ce qui me semble logiques, au vu de la relation question/scores - mais ce qui ne me convient naturellement pas :-)
Avez-vous une suggestion? Votre aide me sera précieuse.
Merci