Neo4j(四):深度链接查询

需要在Neo4j安装目录中的plugins目录下,放置neo4j-graph-data-science.jar包,这个包可以进行图计算(注意版本,最好使用Neo4j-4-X)。

创建数据:

CREATE

(a:Loc {name: 'A'}),

(b:Loc {name: 'B'}),

(c:Loc {name: 'C'}),

(d:Loc {name: 'D'}),

(e:Loc {name: 'E'}),

(f:Loc {name: 'F'}),

(a)-[:ROAD {cost: 50}]->(b),

(a)-[:ROAD {cost: 50}]->(c),

(a)-[:ROAD {cost: 100}]->(d),

(b)-[:ROAD {cost: 40}]->(d),

(c)-[:ROAD {cost: 40}]->(d),

(c)-[:ROAD {cost: 80}]->(e),

(d)-[:ROAD {cost: 30}]->(e),

(d)-[:ROAD {cost: 80}]->(f),

(e)-[:ROAD {cost: 40}]->(f);

查找最短路径(不带权重):

MATCH p=shortestPath((start:Loc {name: 'A'})-[:ROAD*]->(end:Loc {name: 'F'}))

RETURN p

查找最短路径(带权重):

MATCH (start:Loc {name: 'A'}), (end:Loc {name: 'F'})

CALL gds.alpha.shortestPath.stream({

    nodeProjection: 'Loc',

    relationshipProjection: {

        ROAD: {

            type: 'ROAD',

            properties: 'cost',

            orientation: 'UNDIRECTED'

        }

    },

    startNode: start,

    endNode: end,

    relationshipWeightProperty: 'cost'

})

YIELD nodeId, cost

RETURN gds.util.asNode(nodeId).name AS name, cost

你可能感兴趣的:(Neo4j(四):深度链接查询)