实用功能

数值函数

从 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

使用度中心性(Degree Centrality)的 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. 结果
节点 score

"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"]