我是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
答案 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