Я пытаюсь найти связанные узлы, которые связаны отношениями, имеющими заданную метку и заданный атрибут.
Например, я хочу найти все узлы, связанные отношением Edge
, имеющим myID
123
Я начал с этого запроса, который возвращает данные об отношениях.
MATCH ()-[r:Edge{myID: "123"}]->()RETURN r;
Подсчет этих отношений с
MATCH ()-[r:Edge{myID: "123"}]->()RETURN count(r)
Я получаю 45.
Затем я создал следующее:
MATCH (a)-[r:Edge{myID: "123"}]->(b)RETURN a,b,r LIMIT 25
Однако это не работает: кажется, что он возвращает намного больше узлов, чем ожидалось: прежде всего LIMIT
не является ограничивающим, и, следовательно, подграф становится очень большим и его трудно анализировать, но кажется, что он возвращает даже отношения узлов со свойством myID
, отличным от 123
, наверняка, больше 45.
Как я могу это сделать?
EDIT
Взять в качестве примера следующий график:
//create 2 nodes
CREATE (: myNode{NID : 1});
CREATE (: myNode{NID : 1});
//create 2 relationships:
MATCH (n1:myNode{NID:1})
MATCH (n2:myNode{NID:1})
MErGE(n1)-[r:Edge{myID:2}]->(n2);
MATCH (n1:myNode{NID:1})
MATCH (n2:myNode{NID:2})
MErGE(n1)-[r:Edge{myID:2}]->(n2);
Проблема может быть замечена при попытке выполнить следующие запросы, которые будут возвращать оба ребра:
MATCH p=(a)-[r:Edge{myID : 1}]->(b) return p limit 1;
MATCH (a)-[r:Edge{myID : 1}]->(b) return a,r,b limit 1;