2016-11-16 6 views
0

у меня есть два запроса, которые почти то же самое, как показано ниже (единственное отличие состоит в г: перед ФОР в Запросе 1)«Одинаковые» запросы возвращают разные результаты

Query 1: MATCH p=()-[r:FOR]->() RETURN count(p) 
Query 2: MATCH p=()-[FOR]->() RETURN count(p) 

Когда я бегу эти запросы против моего сервера Neo4j, он возвращает другой результат. Запрос 1 составляет около 1/3 или запроса 2, я полагаю, что из-за запроса 1 «объединил» результаты, пока запрос 2 не сделал (например, a- [FOR] -> c и b- [FOR] -> c были объединены в 1 запись), но только мои догадки. Я попытался выполнить поиск Google или выполнить поиск в документации Neo4j, но не повезло. Кто-нибудь может объяснить разницу?

Заранее спасибо.

ответ

4
MATCH p=()-[r:FOR]->() RETURN count(p) 

Этот запрос связывает FOR отношения к переменной r (хотя он не использует его).

MATCH p=()-[FOR]->() RETURN count(p) 

Этот запрос связывает любой отношения (то есть из любого типа) к переменной FOR.

Правильный синтаксис для указания типа отношения в Cypher равен :XXX, с ведущим двоеточием. Правильная версия второго запроса будет фактически:

MATCH p=()-[:FOR]->() RETURN count(p)