什么是neo4j cypher中的模式理解和自定义投影

Mah*_*aha 5 neo4j cypher

我正在阅读cypher refcard,其中我遇到了以下内容:

模式理解可用于从匹配项直接自定义投影到列表中:

MATCH (a)
RETURN [(a)-->(b) WHERE b.name = 'Bob' | b.age]
Run Code Online (Sandbox Code Playgroud)

我准备了简单的图表并尝试了类似的查询。但它一直给错误Invalid input 'W': expected whitespace, comment, a relationship patternWHERE

一季度。请告诉我上述暗号的含义,它应该返回所有的路径(a)-->(b)b.name=Bob回报或b.age

Q2。我从来没有见过的路径规范(a)-->(b)之后RETURN。显然我在这里缺少一些基础知识。那是什么?

Inv*_*con 6

注意:模式理解仅在 Neo4j 3.1 中引入,3.0.x 及以下版本将不具备此功能。

对 Q1 的回答:此示例中的含义是:“给定变量a(因为它在查询前面的范围内)找到与某个节点的传出关系并将其绑定到b节点b的 name 属性为 'Bob'的变量。使用每个b节点的 age 属性填充列表。

|在这方面的模式和where子句从什么值来填充到结果列表中表达分离。

不确定我是否在关注您在第二季度问的问题。

对于您的特定用途,为什么它会给您一个错误,我们需要能够看到您正在用它做什么来找出问题所在。你能把它添加到你的描述中吗?

但是,如果我冒险猜测一下,您可能会在模式理解中使用一种没有任何关系的模式,如下所示:

return [(a:Person) | a.name] as names
Run Code Online (Sandbox Code Playgroud)

当前,当模式中没有关系时,像这样的用法将失败,我认为这是一个错误,并因此提交到问题列表中。

有关更多信息,请参阅开发指南中的模式理解条目,以及有关模式理解(和地图投影)的较长文章。