2017-02-21 3 views
0

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

матча (: р) - [: отношения] - (: х) опция соответствия (: р) - [: relationship2] - (: x2)

Теперь предположим, что я поставил предел в конце (например, Limit 200). Будут ли строки возвращать исчерпывающие все необязательные совпадения, которые удовлетворяются перед переходом на новый первичный запрос с новым узлом p? Или запрос может произвольно возвращать только подмножество необязательных совпадений?

ответ

0

1) Ваш синтаксис шаблона Cypher кажется плохим. Для узла (в круглых скобках) необязательный идентификатор приходит первым, и каждая дополнительная метка появляется после двоеточия. Для отношений (в квадратных скобках) необязательный идентификатор приходит первым, и тип появляется после двоеточия. Я подозреваю, что ваш пример должен был выглядеть примерно так (так что p идентификатор может быть использован, чтобы связать 2 модели вместе):

MATCH (p)-[relationship:FOO]-(x) 
OPTIONAL MATCH (p)-[relationship2:BAR]-(x2) 
... 

2) шифровальщика документация не определяет поведение LIMIT до уровня о деталях, о которых вы спрашиваете, поэтому вы должны создать свой Cypher, чтобы получить результат, максимально приближенный к тому, что вы хотите. Например, если вы хотите, чтобы вернуться до 200 x2 значений для однойp найденных MATCH шаблона, вы можете использовать что-то вроде этого:

MATCH (p)-[relationship:FOO]-(x) 
WITH p LIMIT 1 
OPTIONAL MATCH (p)-[relationship2:BAR]-(x2) 
RETURN x2 LIMIT 200 
+0

спасибо - я был небрежен с шифровальщика запросом, но ваши точка правильная. Мне нравится решение, которое вы поставили для ограничения. Интересно, определено ли поведение предела, но не документировано. –

Смежные вопросы