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

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

Pattern comprehensions may be used to do a custom projection from a match directly into a list:

MATCH (a)
RETURN [(a)-->(b) WHERE b.name = 'Bob' | b.age]

我准备了简单的图表并尝试了类似的查询.但它一直给出错误输入’W’无效:预期的空格,注释,WHERE上的关系模式.

Q1.什么是上述密码的含义,如果它返回所有路径(a) – >(b)b.name = Bob或返回b.age?

Q2.我从未在RETURN之后看到路径规范(a) – >(b).显然我在这里缺少一些基础知识.那是什么?

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

对Q1的回答:这个例子中的含义是:“给定变量a(因为它在查询中较早的范围内)找到与某个节点的传出关系并将其绑定到变量b,其中节点b的名称属性为’Bob’使用每个b节点的age属性填充列表.

|在此上下文中,将pattern和where子句与要填充到结果列表中的值的表达式分开.

不确定我是否跟随你在Q2的要求.

对于您的具体用法,为什么它会给您一个错误,我们需要能够看到您正在使用它来解决问题.你能将它添加到你的描述中吗?

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

return [(a:Person) | a.name] as names

目前这种用法在模式中没有任何关系时会失败,我认为这是一个错误,并且如此提交到问题列表中.

有关详细信息,请参阅开发指南中的pattern comprehension entry,以及关于模式理解(和地图投影)的longer writeup.

点赞