📅  最后修改于: 2023-12-03 15:03:09.555000             🧑  作者: Mango
Neo4j是一款开源的图形数据库,其提供了一系列运算符来对数据进行操作和查询。本文将对Neo4j运算符进行介绍。
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
语句的示例:
MATCH (n:Person)
WHERE n.name = 'Tom Hanks'
RETURN n
上面的语句表示匹配所有标签为Person
的节点,但只返回那些名字为Tom Hanks
的人。
WITH
语句用于在查询管道中传递数据。它用于将查询结果传递给后续的操作。以下是一些WITH
语句的示例:
MATCH (n:Person)-[:ACTED_IN]->(m:Movie)
WITH n, COUNT(m) AS numMovies
WHERE numMovies > 1
RETURN n
上面的语句表示匹配所有标签为Person
的节点和它们出演的电影,计算每个人出演电影的数量,并返回那些参演电影超过1部的人。
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 (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
函数的示例:
MATCH (n:Person)-[:ACTED_IN]->(m:Movie)
RETURN COUNT(n)
上面的语句表示计算参演了电影的人的数量。
AVG
函数用于计算查询结果集中某个属性的平均值。以下是一些AVG
函数的示例:
MATCH (n:Person)
RETURN AVG(n.born)
上面的语句表示计算所有人的出生年份的平均值。
SUM
函数用于计算查询结果集中某个属性的总和。以下是一些SUM
函数的示例:
MATCH (n:Person)-[:ACTED_IN]->(m:Movie)
RETURN SUM(m.revenue)
上面的语句表示计算所有电影的票房总收入。
本文介绍了Neo4j的一些常用运算符。这些运算符可以用于对图形数据库中的数据进行查询、过滤和计算。熟练掌握这些运算符将有助于开发人员更高效地处理图形数据库中的数据。