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

标签 neo4j cypher

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

两者之间有什么实际区别吗?当您知道属性值时,第一种形式似乎工作得很好,但是有没有办法使用通配符或 LIKE 条件呢?

最佳答案

EXPLAIN and PROFILE options显示查询的执行计划。

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

enter image description here

enter image description here

所以在性能方面,这两个符号应该完全相同。

The first form seems to work well when you know the property value, but is there a way to use wildcards or a LIKE condition with it?



没错,WHERE给你更多的灵活性。基本上,MATCH子句只允许您检查可以写为 WHERE a.prop1 = value1 AND a.prop2 = value2 AND ... 的相等性.同时,WHERE让你更多:AND/OR/XORNOT逻辑运算符,检查不等式;使用 STARTS WITH , CONTAINS , ENDS WITH和正则表达式;检查节点类型,如 WHERE (a:SomeLabel)甚至检查匹配的变量是否是像 WHERE NOT (a)-[:SOME_REL]->(:SomeLabel) 这样的模式的一部分.

关于neo4j - 在 Cypher 中使用 match({property}) 和 WHERE 子句的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46655570/

相关文章:

java - Neo4j 核心 : Load RelationShips with order

java - neo4j 与 spring 数据的重复关系

java - 在 Spring Data Neo4j 中实现延迟加载

neo4j - 使用带有 Cypher 的 Neo4j 中的索引使用 "IN"子句进行查询

neo4j - 创建唯一时,Cypher foreach 似乎不会迭代集合

java - 在我的 JavaBeans 上实现 Apache TinkerPop

neo4j - 如何删除两个节点之间的关系?

data-structures - 在 Neo4j 中创建独特的结构,它们的节点是另一个结构的一部分

neo4j - 如何在neo4j中使用cypher获取节点属性列表

Neo4j 密码 : control order of MATCH based on input array?