我注意到match(a:Vegetable{name:'Cellery'}) return a
和match(a:Vegetable) where a.name='Cellery' return a
给了我相同的结果。
两者之间是否存在实际差异?当您知道属性值时,第一种形式似乎运行良好,但有没有办法使用通配符或LIKE条件?
答案 0 :(得分:5)
EXPLAIN
and PROFILE
options显示查询的执行计划。
它们显示两个查询的完全相同的执行计划(在空数据库上)。
因此,在性能方面,这两个符号应该完全相同。
当您知道属性值时,第一种形式似乎运行良好,但有没有办法使用通配符或LIKE条件?
这是正确的,WHERE
为您提供了更大的灵活性。基本上,MATCH
子句只允许您检查可以写为WHERE a.prop1 = value1 AND a.prop2 = value2 AND ...
的等式。同时,WHERE
可以为您提供更多:AND
/ OR
/ XOR
和NOT
逻辑运算符,检查不等式;使用STARTS WITH
,CONTAINS
,ENDS WITH
和正则表达式;检查WHERE (a:SomeLabel)
之类的节点类型,甚至检查匹配的变量是否是WHERE NOT (a)-[:SOME_REL]->(:SomeLabel)
等模式的一部分。