2016-08-05 4 views
0

sample graphCypher Запрос поддержки

Привет, Для приведенного выше графика, нужна ваша помощь шифровальщика запроса для сценария ниже.

1) вернуть все узлы с отношением R1, соединенным с узлом R1. Я хочу получить S1, S2, S3 в качестве результата запроса

2) Из остальных узлов R2, R3 и т. Д., Если нет прямой связи, есть способ запросить нижний узел узла, т. Е. S1, S2 и т.д., от узла R5

Цените ваши входы

+0

Я новичок в Neo4j, ниже, что я try..All RNode и SNodes имеют метки. Но не получите правильные узлы MATCH (: RNode {name: 'R1'}) - (SNode) RETURN (SNode) – j2eeuser

+0

В вашем примере SNode является именем переменной. Вы должны иметь метку здесь, если SNodes являются разными типами из ваших других узлов, иначе это будет соответствовать каждому узлу, подключенному к R1. Вы можете перечитать руководство Cypher dev или пройти через учебное пособие в приложении браузера, чтобы ознакомиться с синтаксисом Cypher. – InverseFalcon

+0

Это работает, MATCH (: RNode {name: 'R1'}) - [*] - (n: S1) return n – j2eeuser

ответ

1

Ваш график отсутствует узел меток (т.е. типов), если все узлы одного и того же типа и имена R1 ... S5 затем : 1)

MATCH (node:Node)-[:R1]->(x) where node.name ="R1" 
RETURN x 

это означает найти все узлы, которые присоединены d к узлу с именем R1 по отношению R1

2) ваш вопрос непонятен, пытаетесь ли вы найти все S-узлы, данные по R5? данный R5

MATCH(node:Node)-[:*1-7]-(node-s:Node) where node.name="R5" AND node-s.name =~ "S.*" 
RETURN (node-s) 

в [:*1-7] означает путь длиной от 1 до 7

Это было бы проще, если ваши узлы имели ярлыки ...