2016-10-17 1 views
-1

Я хочу написать оператор отношения CREATE для проекта, над которым я работаю. Заявление должно быть что-то вроде этогоSub-запросы в языке запросов Cypher

CREATE (match (p:Halt) where p.name="Ananda College" return p)-[:next_halt {route:['103'],dist:1.45}]->(MATCH (p:Halt) where p.name="Borella" return p) 

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

Invalid input '(': expected whitespace, comment, node labels, MapLiteral, a parameter, ')' or a relationship pattern (line 1, column 15 (offset: 14)) 
"CREATE (match (p:Halt) where p.name="Ananda College" return p)-[:next_halt {route:['103'],dist:1.45}]->(MATCH (p:Halt) where p.name="Borella" return p)" 
+2

Я не уверен, где вы нашли этот синтаксис, но вы можете найти обширный праймер на Cypher [здесь] (http://neo4j.com/docs/developer-manual/3.0/cypher/). –

ответ

1

Ваш синтаксис здесь довольно путается. Пожалуйста, перечитайте документацию разработчика и, возможно, посмотрите на чит-лист Cypher.

Что касается правильного синтаксиса, вам даже не нужна вложенность, чтобы получить то, что вы хотите. Во-первых, вы подходите на ваших стартовых и конечных узлов, то вы можете использовать связанные переменные в других частях вашего запроса, например, чтобы создать отношения:

MATCH (start:Halt), (stop:Halt) 
WHERE start.name = "Ananda College" AND stop.name="Borella" 
CREATE (start)-[:next_halt {route:['103'], dist:1.45}]->(stop) 

Если вы не уверены, если узлы (или отношения), вы можете использовать MERGE вместо этого, который будет MATCH на существующих узлах (или отношениях) или создавать их, если они не существуют.

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

  • Нет связанных вопросов^_^