Neo4j возвращает узлы, связанные отношениями данной метки и свойства - PullRequest
0 голосов
/ 01 июня 2019

Я пытаюсь найти связанные узлы, которые связаны отношениями, имеющими заданную метку и заданный атрибут.

Например, я хочу найти все узлы, связанные отношением 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;

Ответы [ 2 ]

2 голосов
/ 04 июня 2019

Если вы используете браузер neo4j для ввода запросов и визуализации результатов, вам следует знать о параметре браузера «Подключить узлы результатов». Когда эта опция включена, браузер автоматически запрашивает (и отображает) отношения между узлами, возвращаемыми запросом Cypher. (И обратите внимание, что возвращенное отношение ссылается на 2 узла.)

Вы можете включить / отключить опцию «Подключить узлы результата», щелкнув значок шестеренки в левой части окна браузера, прокрутив вниз до панели «Настройки браузера» и отметив / сняв флажок «Подключить узлы результата» .

0 голосов
/ 02 июня 2019

Браузер Neo4J по умолчанию пытается развернуть узлы, которые отображаются в представлении при возврате узлов.

Можете ли вы попробовать

MATCH p=(a)-[r:Edge{myID: "123"}]->(b) return p limit 25.

Браузер Neo4J не должен пытаться расширить узлы.

...