Neo4j: запрос с фильтром отношений

Я должен написать один шифр для схемы, в которой все узлы имеют несколько отношений между собой. Итак, я хочу отфильтровать узлы, скажем, сначала найти узлы, которые имеют отношение HELPSin между темами. Затем проверьте, есть ли между этими узлами отношения KNOWSrelation, а затем верните все узлы со всеми другими отношениями (включая HELPS и KNOWS). Прямо сейчас, чтобы отфильтровать отношение, которое я использую ниже шифра:

MATCH (a)-[r:HELPS]->(b)
WITH distinct a,b
MATCH (a)-[rs:KNOWS]-(b)
RETURN a,b LIMIT 25
Is there any provision to do so Like

MATCH (a)-[r:HELPS AND KNOWS]->(b)
WITH DISTINCT a,b
path = (a)-[*]-(b) //To get all other relations in between filtered nodes.
RETURN rels(path),nodes(path)

Спасибо.


person Govind Mantri    schedule 16.07.2015    source источник


Ответы (2)


Ниже будут получены все остальные отношения между a и b , кроме helps и knows.

    MATCH p = (b)<-[KNOWS]-(a)-[HELPS]->(b) 
    WITH a,b
    MATCH a-[r]->b
    WHERE NOT type(r) IN ['HELPS', 'KNOWS']
    RETURN r
person Sumeet Sharma    schedule 16.07.2015
comment
Это не даст всех других отношений, если A и B не являются последовательными узлами, т.е. A-›B-›C-›D-›E - person Govind Mantri; 16.07.2015
comment
вы задали другие отношения между a и b в соответствии с вопросом и комментарием @GovindMantri - person Sumeet Sharma; 16.07.2015
comment
вы всегда можете изменить ответ в соответствии с вашими потребностями.. если вы не хотите, чтобы отношения были направлены, вы можете использовать a-[r]-b во втором случае совпадения - person Sumeet Sharma; 16.07.2015
comment
Извините, забыл упомянуть об этом в предыдущем запросе! мой сценарий: он не даст всех других отношений, если A и B не являются последовательными узлами, т.е. A-›B-›C-›D-›E, тогда я хочу получить все отношения (пути) из A-D, используя это общее отношение, которое может быть ПОМОГАЕТ/ЗНАЕТ - person Govind Mantri; 16.07.2015

я не думаю, что для этого типа запроса есть какая-либо операция И

ты можешь использовать

MATCH (a)-[:HELPS]->(b)-[:KNOWS]-(a)
WITH  DISTINCT a , b 
MATCH a-[r]-b
WHERE NOT type(r) IN ['HELPS', 'KNOWS']
RETURN r
person Govind Singh    schedule 16.07.2015
comment
А как насчет того, чтобы получить все (Другие) отношения между и b - person Govind Mantri; 16.07.2015
comment
@GovindMantri хм!! нужно одно совпадение потом снова - person Govind Singh; 16.07.2015