实用函数

数值函数

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

gds.util.NaN()

-

返回 `NaN` 作为 Cypher 值。

gds.util.infinity()

-

返回 `Infinity` 作为 Cypher 值。

gds.util.isFinite(value: Number)

要检查其是否有限的值。

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

gds.util.isInfinite(value: Number)

要检查其是否无限的值。

如果给定的参数是 `±Infinity`、`NaN` 或 `null`,则返回 `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-graph 中节点的 nodeId

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

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

neo4j-graph 中节点的 nodeIds 列表

返回给定节点 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"]