从密码查询的关系中获取房产

时间:2014-07-10 04:26:36

标签: neo4j cypher

我有一个问题:

Match (:Company{value:{value}})<-[partOf:PART_OF*]-(per:Person)
-[:MEMBER_OF]->(group:Social) 
Return {Group: {name:group.name, nodeId:group.nodeId, tags:labels(group), 
        people:collect({name:per.name, nodeId:per.nodeId, tags:labels(per)})}}

我想从'partOf'中检索特定属性这可能吗?或者我是否使用类似路径的东西并在每次传递中获得关系和它的属性?

非常感谢

编辑:记住Chris的评论,如果我使用'* .. 2'那么数据并不多,我想从这些关系中检索属性怎么办?

1 个答案:

答案 0 :(得分:1)

使用-[:PART_OF*]-进行查询时,它将匹配:PART_OF类型的无限关系链(和插入节点)。这是由*引起的。因此,标识符partOf不是指单个关系,而是指整个集合。

因此,您无法从partOf获取特定属性,因为它是一个集合,而不是具有属性(单个节点或关系)的东西。

注意:您几乎从不想要使用'*',因为它可以非常轻松地匹配图表中的大量数据。


如果您希望获取partOf集合中元素的属性,可以尝试以下方法之一:

  • 选择偏移,例如partOf[0].proppartOf[1].prop
  • 汇总您感兴趣的属性 - 也许是他们自己的集合,例如[r IN partOf | r.prop](现在您有一个包含每个关系的属性值的新集合)。或者可以将它们相加(假设它们是数字),例如reduce(acc=0, r IN partOf | acc + r.prop)