首页 > 解决方案 > Cypher:子句/函数的命名系统是什么?

问题描述

我正在学习密码并寻找一个简单的教程示例,如下所示:

MATCH (p:Person)-[:ACTED_IN]->()
WHERE toLower(p.name) STARTS WITH 'michael'
RETURN p.name

我很难在 WHERE 子句中发现语法和命名约定背后的系统(我对查询语言非常陌生,如果这应该很明显,很抱歉)。我可以阅读 WHERE 子句,但我认为它是字符串的两种转换——一种从字符串到(小写)字符串,另一种从字符串到布尔值。我希望该条款看起来像

WHERE LOWER p.name STARTS WITH 'michael'

或者

WHERE startsWith(toLower(p.name), 'michael')

(或类似的东西)。任何人都可以解释这背后的逻辑吗?这对我来说似乎很奇怪,所以我很想理解而不是仅仅试图记住什么使用哪种语法。

标签: neo4jcypher

解决方案


STARTS WITHWHERE子句中支持的运算符,而是toLower函数。运算符返回布尔值,但函数可以返回任何内容。Cypher 是一种声明性语言,我认为支持STARTS WITH是为了使 Cypher 尽可能地具有声明性。但我在技术上同意你可以选择任何语法。总体而言,对于子句中的布尔条件WHERE,如果您可以使用运算符轻松支持它,我会说它与函数相比更具声明性。


推荐阅读