10.1.3 Основы связей
10.1.3.1 Исходящие связи
Если имеет значение направление связи, оно показывается с помощью --> или <--, например:
Запрос
MATCH (martin { name:'Martin Sheen' })-->(movie) RETURN movie.title
Возвращает узлы, связанные с Мартином Шином исходящей связью.
Таблица 10.5 Результат
movie.title |
---|
"Wall Street" |
"The American President" |
10.1.3.2 Направленные связи и идентификатор
Если вам требуется идентификатор, либо для фильтрации по свойствам связи, либо для возвращения связи, вот как можно его ввести.
Запрос
MATCH (martin { name:'Martin Sheen' })-[r]->(movie) RETURN r
возвращает все исходящие от Мартина связи.
Таблица 10.6 Результат
r |
---|
:ACTED_IN[1]{} |
:ACTED_IN[3]{} |
10.1.3.3 Сопоставление по типу связи
Когда вы знаете тип связи, который хотите сопоставить, вы можете задать его с помощью двоеточия перед типом связи.
Запрос
MATCH (wallstreet { title:'Wall Street' })<-[:ACTED_IN]-(actor) RETURN actor
возвращает узлы, которые «играли» (ACTED_IN) в фильме Wall Street.
Таблица 10.7 Результат
actor |
---|
Node[1]{name:"Charlie Sheen"} |
Node[2]{name:"Martin Sheen"} |
Node[6]{name:"Michael Douglas"} |
10.1.3.4 Сопоставление по нескольким типам связей
Чтобы сопоставить одному из нескольких типов, вы можете указать его, связав их вместе с помощью символа |.
Запрос
MATCH (wallstreet { title:'Wall Street' })<-[:ACTED_IN|:DIRECTED]-(person) RETURN person
возвращает узлы со связью ACTED_IN или DIRECTED к Wall Street.
Таблица 10.8 Результат
person |
---|
Node[0]{name:"Oliver Stone"} |
Node[1]{name:"Charlie Sheen"} |
Node[2]{name:"Martin Sheen"} |
Node[6]{name:"Michael Douglas"} |
10.1.3.5 Сопоставление по типу связи и использование идентификатора
Если вы хотите ввести идентификатор для связи и одновременно с этим указать требуемый тип связи, просто добавьте и то, и другое, подобно тому, как это сделано ниже.
Запрос
MATCH (wallstreet { title:'Wall Street' })<-[r:ACTED_IN]-(actor) RETURN r
возвращает узлы, которые снимались (ACTED_IN) в фильме Wall Street.
Таблица 10.9 Результат
r |
---|
|:ACTED_IN[0]{} |
:ACTED_IN[1]{} |
:ACTED_IN[2]{} |