Как отфильтровать узлы в Neo4j, используя свойство отношений типа List - PullRequest
0 голосов
/ 19 ноября 2018

Как получить все факторы влияния для конкретного пользователя и на основе конкретного свойства в отношении, определенном, например, в приведенном ниже примере, я хочу получить все факторы влияния для p1 в prid = 'c1' и проецировать IN только PR1?

Пример набора данных

 CREATE (p1:People {name:'P1 User',  id: 'p001'})
CREATE (p2:People {name:'P2 User',  id: 'p002'})
CREATE (p3:People {name:'P3 User',  id: 'p003'})
CREATE (p4:People {name:'P4 User',  id: 'p004'})
CREATE (p5:People {name:'P5 User',  id: 'p005'})

CREATE
      (p1)<-[:INFLUENCER {prid:'c1', projects:['PR1','PR2']}]-(p2),
      (p1)<-[:INFLUENCER {prid:'c1', projects:['PR1','PR4']}]-(p3),
      (p1)<-[:INFLUENCER {prid:'c1', projects:['PR1']}]-(p4),
      (p2)<-[:INFLUENCER {prid:'c1', projects:['PR1']}]-(p3),
      (p3)<-[:INFLUENCER {prid:'c1', projects:['PR4','PR5']}]-(p4),
      (p4)<-[:INFLUENCER {prid:'c1', projects:['PR4','PR5']}]-(p5)

 MATCH (p:People{gsid:'p001'})<-[r:INFLUNCED_BY]-(:People)
    WHERE r.prid='c1' AND r.projects IN ['PR1']
    RETURN p,r;

Приведенный выше запрос не возвращает записей, хотя существуют следующие отношения

MATCH (node) RETURN node;

The result for the above query

1 Ответ

0 голосов
/ 19 ноября 2018

Во-первых, у вас нет одинаковых имен для свойств узлов и типа отношений в запросе:

gsid vs id
INFLUNCED_BY vs INFLUENCER

Во-вторых, вам нужно проверить пересечение списков, а не вхождение. Итак, согласно данным испытаний:

MATCH (p:People {id:'p001'})<-[r:INFLUENCER]-(:People)
WHERE r.prid ='c1' AND 
      // Check the lists for intersection
      any(p IN r.projects WHERE p IN ['PR1'])
RETURN p, r;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...