Я играл с Neo4j и имею проблему, для которой у меня нет решения, поэтому мой вопрос здесь.Neo4j: Множественные комбинации отношений между узлами
Для моей конкретной проблемы я опишу упрощенную версию, которая отражает суть. Предположим, у меня есть график местоположений, которые соединены либо непосредственно, либо через объезд:
- прямой: (А) - [: GOES_TO] -> (В)
- непрямого: (А) -> [: GOES_THROUGH] -> (C) - [: COMES_BACK_TO] -> (B)
Если я хочу, чтобы все между "Go" и "Finish" с отношениями GOES_TO я могу легко использовать Cypher запрос:
START a=node:NODE_IDX(Id = "Go"), b=node:NODE_IDX(Id = "Finish)
MATCH a-[r:GOES_TO*]->b
RETURN a,r,b
Здесь NODE_IDX является индексом на узлах (Id) ,
Где я застрял, когда я хочу иметь все пути между «Go» и «Finish», которые не являются отношениями GOES_TO, а скорее несколькими комбинациями отношений GOES_THROUGH ->() -> COMES_BACK_TO (переменной глубины) ,
Я не хочу отфильтровывать отношения GOES_TO, потому что между узлами существует гораздо больше связей, и я не хочу убирать их все (динамически). Возможно ли, чтобы я предусмотрел MATCH с переменной глубиной, многосвязностью?
Спасибо!
это не совсем похоже? http://stackoverflow.com/questions/14104682/cypher-query-finding-all-paths-between-two-nodes-filtered-by-relationship-prope –
Нет, не совсем. Я ищу что-то вроде '(a) - [([: GOES_THROUH] ->() - [: COMES_BACK_TO]) *] -> (b)', т. Е. Я хочу повторить не одно отношение, которое будет '[: RELATIONSHIP *]', но комбинация нескольких в определенном шаблоне. – devnull
Я только что заметил эту группу (https://groups.google.com/forum/#!topic/neo4j/MIb2uCcJy1I), где задан тот же вопрос. Кажется, в настоящее время в Cypher нет поддержки такого типа запросов. Очень жаль! – devnull