📌  相关文章
📜  根据给定条件构造 Cypher字符串(1)

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

根据给定条件构造 Cypher字符串

Cypher是一种图形数据库查询语言,类似于SQL。它是Neo4j图形数据库的主要查询语言,用于检索、修改和管理图形数据库中的数据。

在构造 Cypher 字符串时,我们需要考虑以下几点:

  1. 节点和关系的类型及其属性
  2. 节点和关系的标签
  3. 节点和关系的限定条件
  4. 返回结果的类型和限制条件

下面是一些示例,帮助你了解如何根据给定条件构造 Cypher 字符串。

创建新节点

我们可以使用以下语法来创建一个新节点:

CREATE (node:NodeType {property1:value1, property2:value2})

其中 NodeType 是节点类型,property1property2 是节点属性。

例如,如果我们想要创建一个新的 Person 节点,有属性 nameage,则可以使用以下 Cypher 字符串:

CREATE (p:Person {name:"John Smith", age:30})
创建新关系

我们可以使用以下语法来创建一个新关系:

MATCH (startNode:StartNodeType), (endNode:EndNodeType)
WHERE startNode.property = value1 AND endNode.property = value2
CREATE (startNode)-[rel:RELATIONSHIP_TYPE]->(endNode)

其中 StartNodeTypeEndNodeType 是起始和结束节点类型,RELATIONSHIP_TYPE 是关系类型。

例如,如果我们想要创建一个从 person1person2 的新关系,类型为 KNOWS,则可以使用以下 Cypher 字符串:

MATCH (p1:Person), (p2:Person)
WHERE p1.name = "John Smith" AND p2.name = "Jane Doe"
CREATE (p1)-[:KNOWS]->(p2)
更新节点属性

我们可以使用以下语法来更新节点属性:

MATCH (node:NodeType)
WHERE node.property = value
SET node.property = newValue

例如,如果我们想要更新 Person 节点 John Smith 的年龄,我们可以使用以下 Cypher 字符串:

MATCH (p:Person)
WHERE p.name = "John Smith"
SET p.age = 32
查询节点和关系

我们可以使用以下语法来查询节点和关系:

MATCH (node:NodeType)
WHERE node.property = value
RETURN node
MATCH (startNode:StartNodeType)-[rel:RELATIONSHIP_TYPE]->(endNode:EndNodeType)
WHERE startNode.property1 = value1 AND endNode.property2 = value2
RETURN rel

例如,如果我们想要查询所有 Person 节点,我们可以使用以下 Cypher 字符串:

MATCH (p:Person)
RETURN p

如果我们想要查询所有 Person 节点的 KNOWS 关系,则可以使用以下 Cypher 字符串:

MATCH (p1:Person)-[rel:KNOWS]->(p2:Person)
RETURN rel
删除节点和关系

我们可以使用以下语法来删除节点和关系:

MATCH (node:NodeType)
WHERE node.property = value
DETACH DELETE node
MATCH (startNode:StartNodeType)-[rel:RELATIONSHIP_TYPE]->(endNode:EndNodeType)
WHERE startNode.property1 = value1 AND endNode.property2 = value2
DELETE rel

例如,如果我们想要删除 Person 节点 John Smith,则可以使用以下 Cypher 字符串:

MATCH (p:Person)
WHERE p.name = "John Smith"
DETACH DELETE p

如果我们想要删除从 person1person2KNOWS 关系,则可以使用以下 Cypher 字符串:

MATCH (p1:Person)-[rel:KNOWS]->(p2:Person)
WHERE p1.name = "John Smith" AND p2.name = "Jane Doe"
DELETE rel

以上就是构造 Cypher 字符串的一些示例,希望对你有所帮助!