繁体   English   中英

在Cypher中使用match({property})和WHERE子句之间的区别

[英]Difference between using match({property}) and WHERE clause in Cypher

我注意到match(a:Vegetable{name:'Cellery'}) return amatch(a:Vegetable) where a.name='Cellery' return a给我相同的结果。

两者之间是否有实际区别? 当您知道属性值时,第一种形式似乎可以很好地工作,但是是否可以使用通配符或LIKE条件呢?

EXPLAINPROFILE选项显示查询的执行计划。

它们显示两个查询完全相同的执行计划(在空数据库上)。

在此处输入图片说明

在此处输入图片说明

因此,从性能角度来看,这两种表示法应该完全相同。

当您知道属性值时,第一种形式似乎可以很好地工作,但是是否可以使用通配符或LIKE条件呢?

没错, WHERE为您提供了更多的灵活性。 基本上, MATCH子句仅允许您检查可以写为WHERE a.prop1 = value1 AND a.prop2 = value2 AND ... 同时, WHERE还提供了更多功能: AND / OR / XORNOT逻辑运算符,用于检查不等式; 使用STARTS WITHCONTAINSENDS WITH和正则表达式; 检查像WHERE (a:SomeLabel)这样的节点类型,甚至检查匹配变量是否是WHERE NOT (a)-[:SOME_REL]->(:SomeLabel)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM