С внедрением меток neo4j получил аккуратные механизмы управления объектами. Теперь давайте предположим на мгновение, что у нас есть общий граф с множеством разных сущностей и хотелось бы узнать, какие сущности (метки) связаны друг с другом. Вот отправная точка: http://console-test.neo4j.org/?id=wdnbujNeo4j/Cypher - как я могу получить все триггерные трюки?
Graph Setup:
CYPHER 2.0
create
(_1:Crew {name:"Neo"}),
(_2:Crew {name:"Morpheus"}),
(_3:Crew {name:"Trinity"}),
(_4:Language {name:"Cypher"}),
(_5:Machines {name:"Agent Smith"}),
(_6:Machines {name:"The Architect"}),
_1-[:KNOWS]->_2,
_1-[:LOVES]->_3,
_2-[:KNOWS]->_3,
_2-[:KNOWS]->_4,
_4-[:KNOWS]->_5,
_5-[:CODED_BY]->_6
Query:
CYPHER 2.0
match x-[r]->y
return head(labels(x)) as head, type(r), head(labels(y)) as tail
Это было бы получить нам обзор объектов, которые относятся друг к другу:
+--------------------------------------+
| head | type(r) | tail |
+--------------------------------------+
| "Machines" | "CODED_BY" | "Machines" |
| "Language" | "KNOWS" | "Machines" |
| "Crew" | "KNOWS" | "Crew" |
| "Crew" | "KNOWS" | "Language" |
| "Crew" | "KNOWS" | "Crew" |
| "Crew" | "LOVES" | "Crew" |
+--------------------------------------+
Сейчас. Есть ли какой-либо запрос Cypher, который вернет нам различные значения для этих троек?
Вопрос с бонусом: можем ли мы получить их количество/частоту?
Grats. Ты просто заставлял меня чувствовать себя глупым, как ботинок. – Michael
Lol. Получение всех этикеток ... вот это еще одна история. –
Ну, есть запрос на растяжение: https://github.com/neo4j/neo4j/pull/742 Теперь вы можете просто получить список всех различных комбинаций меток и обработать, используя любой язык, который вы используете ... – Michael