在Neo4J中迈出第一步--有些东西我不太明白(也许与语法有关)
为什么会返回结果?
MATCH (d:People)-[HAS_VEHICLE*]->(v:Vehicle) return d, v
虽然这不会返回任何结果
MATCH (d:People)-[r:HAS_VEHICLE*]->(v:Vehicle) return d, v
它们之间的区别是引入了关系变量--但是为什么它会影响查询是返回结果还是根本没有结果呢?
发布于 2016-09-28 18:30:50
实际上,这两个查询之间的区别是,第一个查询没有指定关系类型。相反,第一个查询指定HAS_VEHICLE作为标识符。
关系类型之前必须加上冒号。因此,您的第一个查询应该是:
MATCH (d:People)-[:HAS_VEHICLE*]->(v:Vehicle) return d, v编辑
上面的查询也不应该返回任何结果,这意味着您的DB中没有匹配指定模式的路径。例如,要匹配上述模式,所有关系都必须是HAS_VEHICLE类型的。
您可以修改查询以不需要HAS_VEHICLE类型,并返回与结果新模式匹配的路径上的实际关系类型:
MATCH (d:People)-[rels*]->(v:Vehicle)
RETURN d, EXTRACT(r IN rels | TYPE(r)) AS types, v;https://stackoverflow.com/questions/39753462
复制相似问题