1

我已经开始使用 neo4j,并且我的 neo4j 数据库中有多个版本的图(唯一改变的是顶部节点的时间戳)。

我想知道如何只获得与那个节点的关系。我目前使用这个:

"START n=node(*) MATCH (n)-[r]->(m) RETURN n,r,m;"

但这只是显示所有这些。我知道我必须更改 n=node(*) 但我不知道要更改什么。(顶部节点的名称是:Info)所以可能类似于

"START n=node(i:Info{timeStamp:'20/04/2018'}) MATCH (n)-[r]->(m) RETURN n,r,m;"

但这只会给我与那个节点的关系......我需要整个图表

4

1 回答 1

1

做这个:

MATCH (n:Info)-[r]->(m)
WHERE n.timeStamp = '20/04/2018'
RETURN n, r, m;

为了更快地访问顶部节点,您还应该在 上创建一个索引:Info(timeStamp)

CREATE INDEX ON :Info(timeStamp);

[更新]

要将所有关系和节点也获得深度 2,您可以这样做:

MATCH (n:Info)-[r1]->(m1)-[r2]->(m2)
WHERE n.timeStamp = '20/04/2018'
RETURN n, r1, m1, r2, m2;

要使所有关系和节点达到任意深度(例如 5),您可以这样做(每个返回path的都是从n到子节点的匹配路径之一):

MATCH path=(n:Info)-[r*..5]->(m)
WHERE n.timeStamp = '20/04/2018'
RETURN path;

您也可以只[r*]用于无界可变长度搜索,但这可能会导致服务器内存不足或需要很长时间才能完成。

于 2018-07-27T17:35:38.927 回答