Есть ли список зарезервированных слов для Neo4j Cypher? Я хотел бы избежать любых ловушек, обнаруженных другими, зарезервированные слова кусали меня в прошлом с другими проектами.
Список зарезервированных слов на шифровальном языке?
Ответы (3)
В документации нет исчерпывающего списка зарезервированных слов. Для предстоящей версии 2.0 ключевые слова определены в одном файле с возможными сокращениями (например, по возрастанию/убыванию):
Версия 1.9 немного хуже организована, большинство из них находятся в https://github.com/neo4j/neo4j/blob/2.0/community/cypher/src/main/scala/org/neo4j/cypher/internal./parser/v1_9/Base.scala, "создать уникальный" находится в https://github.com/neo4j/neo4j/blob/2.0/community/cypher/src/main/scala/org/neo4j/cypher/internal/parser/v1_9/CreateUnique.scala
Для Neo4j есть справочная карта, которую я люблю использовать: https://neo4j.com/docs/cypher-refcard/current/
Единственные действительно зарезервированные слова (по состоянию на 2.0 M03) (и, извините, если это неполное, это не в моей голове):
START
MATCH
WHERE
WITH
RETURN
FOREACH
CREATE
SET
UNION
DELETE
REMOVE
CASE
WHEN
THEN
ASC
DESC
Существуют также функции/функции агрегации, но синтаксический анализатор достаточно умен, чтобы разрешать такие вещи, как:
RETURN count(*) as count
Я бы не беспокоился об этом - это даст вам разумную ошибку, если вы все равно столкнетесь с одним из этих случаев. Вот так:
Query:
START match=node(*)
RETURN match
Error: reserved keyword
"START match=node(*) "
LIMIT
?
- person ; 27.01.2017
match (match) return match as return limit 1
- person Eve Freeman; 07.02.2017