neo4j Cypher: отношения не работают, как ожидалось - PullRequest
0 голосов
/ 30 января 2020

Я копирую код непосредственно из руководства neo4j Cypher, но код не работает в моей среде, поскольку в документации сказано, что он должен:

CREATE (john:Person {name: 'John'}) 
CREATE (joe:Person {name: 'Joe'}) 
CREATE (steve:Person {name: 'Steve'}) 
CREATE (sara:Person {name: 'Sara'}) 
CREATE (maria:Person {name: 'Maria'}) 
CREATE (john)-[:FRIEND]->(joe)-[:FRIEND]->(steve) CREATE (john)-[:FRIEND]->(sara)-[:FRIEND]->(maria)

Предполагается, что он будет работать следующим образом:

MATCH (user)-[:FRIEND]->(follower) WHERE user.name IN ['Joe', 'John', 'Sara', 'Maria', 'Steve'] AND follower.name =~ 'S.*' RETURN user.name, follower.name

дает: +

----------------------+ | 
john.name | fof.name | 
+----------------------+
 | "John"    | "Maria"  | |
 "John"    | "Steve"  | 
+----------------------+ 2 rows

но вместо этого я получаю:

(без изменений, без записей)

Я буквально копирую / вставляю код из руководства в neo4j и получаю неожиданные результаты. Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: я копировал код в одну строку за раз и выполнял одну строку за раз. Если я копирую весь блок кода и выполняю его как блок, он работает нормально. Я до сих пор не понимаю, почему neo4j не работает одинаково, когда я выполняю по одной строке за раз.

1 Ответ

2 голосов
/ 30 января 2020

Если вы выполняете его по одной строке за раз, имена переменных go выходят за рамки. Это вещь перед человеком. С таким же успехом можно создавать узлы с помощью

CREATE (:Person {name:'John'})

. Но когда вы выполняете самостоятельно

CREATE (a:Person {name:'John'})

, имя переменной a впоследствии теряется в следующей строке. Следовательно, когда вы выполняете последнюю строку, которая определяет отношения, имена переменных не имеют смысла. Когда вы выполняете все строки вместе, определения переменных сохраняются, и это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...