从单个密码调用中获取多个关系属性

时间:2013-06-25 15:06:56

标签: neo4j cypher

我是cypher,neo4j和图形数据库的新手。我使用的数据模型有点令人困惑,但看起来节点只是GUID占位符,所有真实的“数据”作为与节点关系的属性(将每个节点关联回节点零)。 / p>

每个节点(基本上只有一个guid)与键/值对有十几个关系,它们是我需要的实际数据。 (我猜这是为了版本化吗?..)

我需要能够进行一次密码调用,以便在连接到同一节点的两个(或更多)关系中获取属性 - 这是我想要进行一次调用的两个调用;

start n = Node(*)
match n-[ar]->m
where has(ar.value) and has(ar.proptype) and ar.proptype = 'ccid' 
return ar.value

start n = Node(*)
match n-[br]->m
where has(br.value) and has(br.proptype) and br.proptype = 'description'
return br.value

如何在单个密码调用中执行此操作?

编辑 - 澄清;

我希望将结果作为行列表获取,并为每个请求的值添加一列。

返回的东西像;

n.id为Node,ar.value为CCID,br.value为Description

2 个答案:

答案 0 :(得分:3)

如果我错了,请纠正我,但我相信你可以这样做:

start n = Node(*)
match n-[r]->m
where has(r.value) and has(r.proptype) and (r.proptype = 'ccid' or r.proptype = 'description') 
return r.value

有关Cypher操作的更多文档,请参阅here

根据您的编辑,我猜你实际上是在寻找一个节点同时具有ccid和描述的情况?问题很模糊,但我认为这正是你要找的。

start n = Node(*)
match n-[ar]->m, n-[br]->m
where (has(ar.value) and has(ar.proptype) and ar.proptype = 'ccid') and 
      (has(br.value) and has(br.prototype) and br.proptype = 'description') 
return n.id as Node, ar.value as CCID, br.value as Description

答案 1 :(得分:0)

您可以从两个方面匹配关系:

start n = Node(*)
match m<-[br]-n-[ar]->m
where has(ar.value) and has(ar.proptype) and ar.proptype = 'ccid' and 
has(br.value) and has(br.proptype) and br.proptype = 'description'
return ar.value, br.value