neo4j - 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')
(或类似的东西)。任何人都可以解释这背后的逻辑吗?这对我来说似乎很奇怪,所以我很想理解而不是仅仅试图记住什么使用哪种语法。
解决方案
STARTS WITH
是WHERE
子句中支持的运算符,而是toLower
函数。运算符返回布尔值,但函数可以返回任何内容。Cypher 是一种声明性语言,我认为支持STARTS WITH
是为了使 Cypher 尽可能地具有声明性。但我在技术上同意你可以选择任何语法。总体而言,对于子句中的布尔条件WHERE
,如果您可以使用运算符轻松支持它,我会说它与函数相比更具声明性。
推荐阅读
- c# - 使用 2 个本地数据库启用数据库迁移
- angular - 传输超时太短导致 Angular Socket.IO Web 套接字在连接建立之前关闭
- python - 在相同图形上绘制不同模型的 roc 曲线
- oracle - (Oracle)打开视图时显示权限不足
- sql - 孩子的递归总和以计算oracle 12c中的另一个字段
- outlook - 在 Outlook 中,更改 POP3 服务器设置会删除现有的收件箱电子邮件吗?
- sas - 为什么错误的内部查询不会使外部查询错误
- javascript - 我的表中有两个唯一键。使用异常 DUP_VAL_ON_INDEX 时,我可以选择发生违规的特定(唯一)列吗?
- python - 使用 jinja 标签在 html 标签内使用 if 条件
- python - 装饰类的方法会导致 2.7 中的未绑定方法 TypeError