是否可以通过id匹配节点,它位于其他节点或关系的属性中?

时间:2015-08-14 14:41:32

标签: neo4j match

我遇到了简单匹配的问题。 例如, 我有一些节点

start startNode = node(0)

它与另一个有关系。关系的一个属性是带有id(thirdNode)的idOfThirdNode。

我发现start point = node( )只获取数字作为参数,而任何toInt(rel.idOfThirdNode)都不可用,因为其他match(point:_Node) where id(point) = rel.idOfThirdNode

按属性查找节点不是问题。但是无法设置新的重复id-property。

是否有任何决定或仅在模型中保存此属性并开始与此属性的新匹配(例如id)?

修改 早些时候,我已经采取了这样的行动:

start startNode = node({0})
optional match startNode-[r:REL]-(relNode: _Node)
return distinct startNode, id(r) as linkId, id(relNode) as nodeId, 
r.idOfthirdNode as point

在某些字段中带有空值的漂亮表

______________________________________
| StartNode| linkId | nodeId | point |
--------------------------------------
| startNode|    1   |   2    | null  |
|   info   |        |        |       |
-------------------------------------
| startNode|    3   |   4    |   5   |
|    info  |        |        |       |

但是现在这个“where”使得禁用所有空匹配

 start startNode = node({0})
 optional match startNode-[r:REL]-(relNode: _Node), (pointNode:_Node) 
 where id(pointNode) = r.idOfthirdNode 
 return distinct startNode, id(r) as linkId, id(relNode) as nodeId, 
 collect({pointNode.name, id:id(pointNode)}) as point

我只得到第二行。

2 个答案:

答案 0 :(得分:1)

你应该可以这样做:

MATCH (point:_Node), (node:Label)
WHERE ID(point) = node.idOfThirdNode
RETURN *

但我从未真正看到过这种情况,因为人际关系比外键更好

答案 1 :(得分:0)

这应该适合你:

START startNode = node(0)
MATCH (startNode)-[rel]->(secondNode), (thirdNode:_Node)
WHERE ID(thirdNode) = rel.idOfThirdNode
RETURN startNode, secondNode, thirdNode