实用函数

数值函数

从 Neo4j 5 开始,此功能也可以直接在 Cypher 中使用 InfInfinityNaN 字面量以及 isNaN() 函数来表达。
名称 参数 描述

gds.util.NaN()

-

返回 NaN 作为 Cypher 值。

gds.util.infinity()

-

返回 Infinity 作为 Cypher 值。

gds.util.isFinite(value: Number)

要检查是否为有限的数值。

如果给定参数是 ±Infinity、NaN 或 null,则返回 false。

gds.util.isInfinite(value: Number)

要检查是否为无限的数值。

如果给定参数是 ±InfinityNaNnull,则返回 true

示例

gds.util.isFinite

gds.util.isFinite() 示例
UNWIND [1.0, gds.util.NaN(), gds.util.infinity()] AS value
RETURN gds.util.isFinite(value) AS isFinite
表 1. 结果
isFinite

true

false

false

gds.util.isInfinite

gds.util.isInfinite() 示例
UNWIND [1.0, gds.util.NaN(), gds.util.infinity()] AS value
RETURN gds.util.isInfinite(value) AS isInfinite
表 2. 结果
isInfinite

false

true

true

gds.util.IsFinitegds.util.IsInfinite 的常见用法是过滤流式传输的结果,例如在 gds.allShortestPaths 的示例中。

节点 ID 函数

GDS 中的结果通常包含节点 ID。您可以使用以下函数将 ID 连接到图中的节点。

名称 参数 描述

gds.util.asNode(nodeId: Number)

neo4j 图中节点的 nodeId

返回给定节点 ID 的节点对象,如果不存在则返回 null。

gds.util.asNodes(nodeIds: List of Number)

neo4j 图中节点 ID 列表

返回给定节点 ID 的节点对象,如果不存在则返回空列表。

示例

以下所有示例应在空数据库中运行。

示例默认使用Cypher 投影。原生投影将在未来版本中弃用。

考虑通过以下 Cypher 语句创建的图

示例图
CREATE  (nAlice:User {name: 'Alice'})
CREATE  (nBridget:User {name: 'Bridget'})
CREATE  (nCharles:User {name: 'Charles'})
CREATE  (nAlice)-[:LINK]->(nBridget)
CREATE  (nBridget)-[:LINK]->(nCharles)
将图投影到 GDS
MATCH (n:User)-[r:LINK]->(m:User)
RETURN gds.graph.project('socialGraph', n, m)

AsNode

使用度中心性的 gds.util.asNode 示例
CALL gds.degree.stream('socialGraph')
YIELD nodeId, score
RETURN gds.util.asNode(nodeId).name AS node, score
ORDER BY score DESC
表 3. 结果
节点 分数

"Alice"

1.0

"Bridget"

1.0

"Charles"

0.0

AsNodes

使用广度优先搜索 (BFS) 的 gds.util.asNodes 示例
MATCH (alice {name: 'Alice'})
CALL gds.bfs.stream('socialGraph', {sourceNode: alice, maxDepth: 1})
YIELD sourceNode, nodeIds
RETURN [x in gds.util.asNodes(nodeIds)| x.name] AS nodes
表 4. 结果
节点

["Alice", "Bridget"]

© . All rights reserved.