📜  Neo4j运算符(1)

📅  最后修改于: 2023-12-03 15:03:09.555000             🧑  作者: Mango

Neo4j运算符

Neo4j是一款开源的图形数据库,其提供了一系列运算符来对数据进行操作和查询。本文将对Neo4j运算符进行介绍。

查询运算符
MATCH

MATCH语句用于匹配图中的节点和关系。它通过指定模式来查询图中的数据。以下是一些MATCH语句的示例:

MATCH (n:Person)-[:ACTED_IN]->(m:Movie)
RETURN n, m

上面的语句表示匹配所有标签为Person的节点和它们所包含的所有出演关系以及标签为Movie的节点。

MATCH (n:Person)-[:ACTED_IN]->(m:Movie)
WHERE m.title = 'The Matrix'
RETURN n

上面的语句表示匹配所有标签为Person的节点和所有它们所包含的出演关系,但只返回那些参演了电影The Matrix的人。

WHERE

WHERE语句用于过滤查询结果。它允许通过指定条件来限制查询结果。以下是一些WHERE语句的示例:

MATCH (n:Person)
WHERE n.name = 'Tom Hanks'
RETURN n

上面的语句表示匹配所有标签为Person的节点,但只返回那些名字为Tom Hanks的人。

WITH

WITH语句用于在查询管道中传递数据。它用于将查询结果传递给后续的操作。以下是一些WITH语句的示例:

MATCH (n:Person)-[:ACTED_IN]->(m:Movie)
WITH n, COUNT(m) AS numMovies
WHERE numMovies > 1
RETURN n

上面的语句表示匹配所有标签为Person的节点和它们出演的电影,计算每个人出演电影的数量,并返回那些参演电影超过1部的人。

数据运算符
UNION

UNION运算符用于合并查询结果。它将多个MATCH语句的结果合并成一个结果集。以下是一些UNION语句的示例:

MATCH (n:Person)
WHERE n.born >= 1990
RETURN n
UNION
MATCH (n:Person)
WHERE n.born < 1990
RETURN n

上面的语句表示匹配所有生于1990年及以后的人和出生于1990年之前的人,并将它们合并为一个结果集。

MERGE

MERGE语句用于创建节点和关系。如果一个节点或关系不存在,则它会被创建。如果它已经存在,则不会重新创建。以下是一些MERGE语句的示例:

MERGE (p:Person {name: 'Tom Hanks'})
RETURN p

上面的语句表示如果标签为Person,名字为Tom Hanks的节点不存在,则创建该节点,并将其返回。

MERGE (n:Person {name: 'Tom Hanks'})-[:ACTED_IN]->(m:Movie {title: 'The Matrix'})
RETURN n, m

上面的语句表示如果标签为Person,名字为Tom Hanks的节点不存在,则创建该节点;如果标签为Movie,电影名称为The Matrix的节点不存在,则创建该节点。最后创建一条ACTED_IN关系将它们连接起来,并返回它们。

聚合运算符
COUNT

COUNT函数用于统计查询结果集中的行数。以下是一些COUNT函数的示例:

MATCH (n:Person)-[:ACTED_IN]->(m:Movie)
RETURN COUNT(n)

上面的语句表示计算参演了电影的人的数量。

AVG

AVG函数用于计算查询结果集中某个属性的平均值。以下是一些AVG函数的示例:

MATCH (n:Person)
RETURN AVG(n.born)

上面的语句表示计算所有人的出生年份的平均值。

SUM

SUM函数用于计算查询结果集中某个属性的总和。以下是一些SUM函数的示例:

MATCH (n:Person)-[:ACTED_IN]->(m:Movie)
RETURN SUM(m.revenue)

上面的语句表示计算所有电影的票房总收入。

总结

本文介绍了Neo4j的一些常用运算符。这些运算符可以用于对图形数据库中的数据进行查询、过滤和计算。熟练掌握这些运算符将有助于开发人员更高效地处理图形数据库中的数据。