Neo4j CQL函数
Neo4j CQL(Cypher Query Language)中包含许多内置函数,这些函数用于执行各种操作,例如字符串处理、数学计算、日期操作等。以下是一些常用的 Neo4j CQL 函数:字符串函数: UPPER() / LOWER(): 将字符串转换为大写或小写。 RETURN UPPER("hello") AS upperCase, LOWER("WORLD") AS lowerCase; SUBSTRING(): 获取子字符串。 RETURN SUBSTRING("Neo4j", 1, 3) AS substringResult; REPLACE(): 替换字符串中的子字符串。 RETURN REPLACE("Hello, World!", "World", "Neo4j") AS replacedString;数学函数: ABS(): 返回数字的绝对值。 RETURN ABS(-5) AS absoluteValue; ROUND() / CEIL...
Neo4j - 方向关系
在 Neo4j 中,关系(Relationship)可以有方向,这意味着关系可以是有向的。有向关系是指从一个节点指向另一个节点的关系。在图数据库中,有向关系常用于表示图中实体之间的方向性关联。在 Cypher 查询语言中,你可以使用箭头(-> 或 <-)来表示关系的方向。以下是一些使用方向关系的例子:创建有向关系:CREATE (a:Person {name: 'Alice'})-[:FOLLOWS]->(b:Person {name: 'Bob'});在上述例子中,我们创建了一个有向关系,表示 Alice 关注 Bob。查询有向关系:MATCH (a:Person)-[:FOLLOWS]->(b:Person)RETURN a.name AS follower, b.name AS following;上述查询将返回所有有向的 "FOLLOWS" 关系,以及关系的起始节点(follower)和结束节点(following)。无向关系查询:如果你希望查询无方向的关系,可以使用无方向的箭头 --:MATCH (a...
Neo4j CQL-Caption标题
在 Neo4j 中,节点和关系可以有一个或多个标签(Labels),而标签通常用于标识节点的类型。如果你想要为节点或关系设置标题(Caption),你可以使用节点和关系的属性来实现,而不是直接设置标题。以下是一个简单的例子,演示如何使用属性为节点设置标题:CREATE (p:Person {name: 'John', title: 'Mr.'});在上述示例中,我们创建了一个具有标签 "Person" 的节点,并为该节点设置了两个属性: "name" 和 "title"。在这里,"title" 属性可以被视为节点的标题。查询节点时,你可以通过返回属性值来获取标题:MATCH (p:Person {name: 'John'})RETURN p.name AS name, p.title AS title;上述查询将返回名字为 'John' 的 Person 节点的名字和标题。对于关系,你可以采用类似的方式设置和查询属性。以下是一个简单的关系示例:...
Neo4j - ID属性
在 Neo4j 中,每个节点和关系都有一个唯一的标识符,称为 ID。这个 ID 是 Neo4j 内部分配的,是一个长整型(long),在数据库中唯一标识一个节点或关系。要查找节点或关系的 ID,可以使用 ID() 函数。以下是一些例子:查询节点的 ID:MATCH (p:Person {name: 'John'})RETURN ID(p) AS personId;上述查询将返回名字为 'John' 的 Person 节点的 ID。查询关系的 ID:MATCH (:Person)-[r:KNOWS]->(:Person)RETURN ID(r) AS relationshipId;上述查询将返回一个 KNOWS 关系的 ID。请注意,虽然可以使用 ID() 函数来查找节点或关系的 ID,但在实际应用中,最好使用节点或关系的属性进行查询,而不是依赖于内部 ID。因为节点或关系的 ID 在删除后可能会被重用,不具备持久性。而节点或关系的属性通常更适合用于唯一标识和查询。
Neo4j CQL-IN操作符
在 Neo4j 的 CQL(Cypher Query Language) 中,IN 操作符用于过滤节点或关系的属性值,以匹配给定的一组值。以下是 IN 操作符的基本用法:节点属性的 IN 操作符:MATCH (p:Person)WHERE p.name IN ['Alice', 'Bob', 'Charlie']RETURN p;这将返回所有名字为 'Alice'、'Bob' 或 'Charlie' 的 Person 节点。关系属性的 IN 操作符:MATCH (:Person)-[r:KNOWS]->(:Person)WHERE r.type IN ['Friend', 'Colleague']RETURN r;这将返回所有类型为 'Friend' 或 'Colleague' 的 KNOWS 关系。使用 IN 操作符进行多属性匹配:MATCH (p:Person)WHERE p.name IN ['Alice&#...
Neo4j CQL - NULL值
在 Neo4j 的 CQL(Cypher Query Language) 中,你可以使用 NULL 表示缺失或未定义的值。以下是一些在 Neo4j CQL 中处理 NULL 值的例子:创建具有 NULL 值的节点:CREATE (p:Person {name: 'John', age: NULL});这将创建一个标签为 "Person"、属性 "name" 为 'John'、属性 "age" 为 NULL 的节点。查询包含 NULL 值的节点:MATCH (p:Person)WHERE p.age IS NULLRETURN p;这将返回所有 "Person" 节点中 "age" 属性为 NULL 的节点。设置 NULL 值:MATCH (p:Person {name: 'John'})SET p.age = NULL;这将把名为 'John' 的 Person 节点的 "age" 属性设置为 NULL。...
Neo4j CQL - 合并
Neo4j 的 CQL(Cypher Query Language) 中有 MERGE 关键字,用于在图数据库中创建或匹配节点和关系。MERGE 被设计为在图中查找特定模式,如果找到则返回,否则创建该模式。以下是一个简单的 MERGE 例子:MERGE (p:Person {name: 'John'})ON CREATE SET p.age = 30RETURN p;这个例子表示,如果图中存在一个标签为 "Person"、属性 "name" 为 'John' 的节点,就返回该节点;否则,创建一个新节点,设置属性 "name" 为 'John',并设置属性 "age" 为 30。你也可以使用 MERGE 创建或匹配关系,例如:MERGE (a:Person {name: 'Alice'})-[:KNOWS]-(b:Person {name: 'Bob'})ON CREATE SET a.age = 25, b.age = 28RE...
Neo4j CQL - LIMIT和SKIP子句
在Neo4j的Cypher查询语言(CQL)中,LIMIT和SKIP子句用于限制查询结果的数量和跳过一定数量的结果。以下是它们的基本用法:1. LIMIT子句: - LIMIT子句用于限制返回结果的数量。 - 示例:LIMIT 10,表示只返回查询结果的前10条记录。 MATCH (n:Node) RETURN n LIMIT 10;2. SKIP子句: - SKIP子句用于跳过查询结果中的前几条记录。 - 示例:SKIP 20,表示跳过查询结果的前20条记录。 MATCH (n:Node) RETURN n SKIP 20;3. LIMIT和SKIP结合使用: - 你也可以结合使用LIMIT和SKIP,以获取指定范围内的结果。 - 示例:SKIP 10 LIMIT 5,表示从第11条记录开始,返回接下来的5条记录。 MATCH (n:Node) RETURN n SKIP 10 LIMIT 5;请注意,SKIP和LIMIT子句通常在分页查询中使用,以便在大数据集中获取并显示有限数量的结果。确保在使用这些子句时考虑性能和效...
Neo4j CQL - ORDER BY排序
在Neo4j的CQL(Cypher Query Language)中,使用ORDER BY子句可以对查询结果进行排序。以下是ORDER BY子句的基本用法:对节点属性排序:// 查询并按年龄升序排序Person节点MATCH (p:Person)RETURN p.name, p.ageORDER BY p.age ASC在这个例子中,使用MATCH找到所有的Person节点,然后使用RETURN子句返回节点的name和age属性,并使用ORDER BY子句按照age属性的升序进行排序。对多个属性排序:// 查询并按年龄降序、名字升序排序Person节点MATCH (p:Person)RETURN p.name, p.ageORDER BY p.age DESC, p.name ASC在这个例子中,使用MATCH找到所有的Person节点,然后使用RETURN子句返回节点的name和age属性,并使用ORDER BY子句按照age属性的降序和name属性的升序进行排序。对关系属性排序:// 查询并按关系的强度降序排序具有FRIEND关系的节点MATCH (a:Person)-[r:FRI...
Neo4j CQL - SET子句
在Neo4j的CQL(Cypher Query Language)中,SET子句用于更新节点或关系的属性。以下是SET子句的基本用法:更新节点的单个属性:// 更新名字为'John'的Person节点的age属性MATCH (p:Person {name: 'John'})SET p.age = 31RETURN p在这个例子中,使用MATCH找到名字为'John'的Person节点,然后使用SET子句将其age属性更新为31。更新节点的多个属性:// 更新名字为'Alice'的Person节点的age和city属性MATCH (p:Person {name: 'Alice'})SET p.age = 26, p.city = 'London'RETURN p在这个例子中,使用MATCH找到名字为'Alice'的Person节点,然后使用SET子句将其age和city属性同时更新。添加新属性:// 给名字为'Bob'的Person节点添加新的hobby属性MA...
Neo4j CQL - REMOVE删除
在Neo4j的CQL(Cypher Query Language)中,使用REMOVE命令可以删除节点的属性。以下是REMOVE命令的基本用法:删除节点的单个属性:// 删除名字为'John'的Person节点的city属性MATCH (p:Person {name: 'John'})REMOVE p.cityRETURN p在这个例子中,使用MATCH找到名字为'John'的Person节点,然后使用REMOVE命令删除该节点的city属性。删除节点的多个属性:// 删除名字为'Alice'的Person节点的age和city属性MATCH (p:Person {name: 'Alice'})REMOVE p.age, p.cityRETURN p在这个例子中,使用MATCH找到名字为'Alice'的Person节点,然后使用REMOVE命令删除该节点的age和city属性。删除节点的所有属性:// 删除名字为'Bob'的Person节点的所有属性MATCH (p:Pers...
Neo4j CQL - DELETE删除
在Neo4j的CQL(Cypher Query Language)中,使用DELETE命令可以删除节点、关系或属性。以下是DELETE命令的基本用法:删除节点及其关系:// 删除名字为'John'的Person节点及其关系MATCH (p:Person {name: 'John'})-[r]-()DELETE p, r在这个例子中,使用MATCH找到名字为'John'的Person节点及其关系,然后使用DELETE命令删除这些节点和关系。删除关系:// 删除具有FRIEND关系的节点之间的关系MATCH (:Person)-[r:FRIEND]-(:Person)DELETE r在这个例子中,使用MATCH找到具有FRIEND关系的节点之间的关系,然后使用DELETE命令删除这些关系。删除节点及其属性:// 删除名字为'Alice'的Person节点及其属性MATCH (p:Person {name: 'Alice'})REMOVE p.age, p.cityDELETE p在这个例子中,使用MATCH找到...
Neo4j CQL - WHERE子句
在Neo4j的CQL(Cypher Query Language)中,WHERE子句用于过滤查询结果,限定匹配特定条件的节点或关系。以下是WHERE子句的基本用法:在节点匹配中使用WHERE:// 查询年龄为30的Person节点MATCH (p:Person)WHERE p.age = 30RETURN p.name, p.age在这个例子中,使用MATCH找到所有的Person节点,然后使用WHERE过滤出年龄为30的节点。在关系匹配中使用WHERE:// 查询具有FRIEND关系且年龄差在5岁以内的Person节点MATCH (a:Person)-[r:FRIEND]-(b:Person)WHERE abs(a.age - b.age) <= 5RETURN a.name AS Person1, b.name AS Person2在这个例子中,使用MATCH找到具有FRIEND关系的节点,然后使用WHERE过滤出年龄差在5岁以内的节点。多个条件的组合使用:// 查询年龄在25到35之间、且名字包含'J'的Person节点MATCH (p:Person)WHE...
Neo4j CQL - CREATE创建标签
在Neo4j中,节点可以使用标签(Labels)进行分类。标签是节点的一种元数据,它们可以用于标识节点属于哪个类别。下面是使用CREATE命令创建带有标签的节点的基本语法:// 创建带有标签的节点CREATE (:LabelName {property1: value1, property2: value2, ...})在这里,LabelName是标签的名称,property1、property2等是节点的属性。你可以根据实际情况为节点设置不同的属性。以下是一个具体的例子:// 创建带有"Person"标签的节点CREATE (:Person {name: 'John', age: 30, city: 'New York'})在这个例子中,我们创建了一个带有"Person"标签的节点,该节点有三个属性:name、age和city。如果要为节点添加多个标签,可以使用逗号分隔它们:// 创建带有多个标签的节点CREATE (:Person:Employee {name: 'Alice', age: 25...
Neo4j CQL - 关系基础
在Neo4j的CQL(Cypher Query Language)中,关系是图数据库中节点之间的连接。关系可以有类型,并且可以包含属性。以下是一些关于Neo4j中关系的基础操作:创建关系:// 创建节点CREATE (:Person {name: 'Alice', age: 30})CREATE (:Person {name: 'Bob', age: 35})// 创建关系MATCH (a:Person), (b:Person)WHERE a.name = 'Alice' AND b.name = 'Bob'CREATE (a)-[:FRIEND]->(b)在上述例子中,我们首先创建了两个Person节点,然后使用MATCH子句找到这两个节点,并通过CREATE语句创建了一个FRIEND关系。查询关系:// 查询具有FRIEND关系的节点及关系MATCH (a:Person)-[r:FRIEND]->(b:Person)RETURN a.name AS Person1, b.name AS Person2, r...
Neo4j CQL - CREATE+MATCH+RETURN命令
在Neo4j的CQL(Cypher Query Language)中,你可以结合使用CREATE、MATCH和RETURN命令来执行创建节点、匹配图模式以及返回结果。以下是一个简单的例子:// 创建节点和关系CREATE (:Person {name: 'John', age: 30})CREATE (:Person {name: 'Alice', age: 25})CREATE (:City {name: 'New York'})// 查询并匹配节点,然后返回结果MATCH (p:Person), (c:City)WHERE p.name = 'John'RETURN p.name AS PersonName, p.age AS PersonAge, c.name AS CityName在上述例子中,我们首先创建了两个Person节点和一个City节点。然后,我们使用MATCH子句找到符合条件的节点(这里是name为'John'的Person节点和任意的City节点),并在RETURN子句中返回这些节点的...
Neo4j CQL - MATCH & RETURN匹配和返回
Neo4j的CQL(Cypher Query Language)中,MATCH用于指定要匹配的图模式,而RETURN则用于指定查询的返回结果。以下是一个简单的例子,演示如何使用MATCH和RETURN:// 创建节点和关系CREATE (:Person {name: 'Tom', age: 35})-[:FRIEND]->(:Person {name: 'Mary', age: 28})CREATE (:Person {name: 'Alice', age: 30})-[:FRIEND]->(:Person {name: 'Bob', age: 32})// 查询并返回节点的属性MATCH (p:Person)RETURN p.name, p.age在上述例子中,我们首先创建了四个Person节点和两个FRIEND关系。然后,我们使用MATCH子句找到所有的Person节点,并在RETURN子句中指定我们想要返回的节点属性(name和age)。你还可以使用更复杂的模式来进行匹配,如下例所示:// 查询并返回具有...
Neo4j CQL - RETURN子句
Neo4j中的CQL(Cypher Query Language)是一种专门用于图数据库的查询语言。RETURN子句用于指定查询的返回结果。以下是一个简单的例子,展示如何在Neo4j中使用RETURN子句:// 创建节点CREATE (:Person {name: 'John', age: 30})CREATE (:Person {name: 'Alice', age: 25})// 查询并返回节点的属性MATCH (p:Person)RETURN p.name, p.age在上述例子中,我们首先创建了两个具有属性的Person节点,然后使用MATCH子句找到所有的Person节点,并在RETURN子句中指定我们想要返回的属性(name和age)。你还可以使用RETURN子句返回节点、关系或其他模式元素的组合。以下是一个更复杂的例子:// 创建节点和关系CREATE (:Person {name: 'Bob', age: 28})-[:FRIEND]->(:Person {name: 'Eve', age: 26})...
Neo4j CQL - MATCH命令
Neo4j CQL(Cypher Query Language)中的MATCH命令用于检索图数据库中的数据。MATCH语句通常与WHERE、RETURN等子句一起使用,以过滤和返回满足特定条件的节点、关系或属性。以下是MATCH命令的一些示例:1. 匹配所有节点:MATCH (n)RETURN n这将返回图数据库中的所有节点。2. 匹配特定节点:MATCH (n:Person)WHERE n.name = 'John'RETURN n这将返回所有标签为Person且属性name为'John'的节点。3. 匹配关系:MATCH (a)-[r:KNOWS]->(b)RETURN a, r, b这将返回所有由KNOWS关系连接的节点a和b以及关系r。4. 使用多个匹配条件:MATCH (n)WHERE n.age > 25 AND n.city = 'New York'RETURN n这将返回年龄大于25且城市为'New York'的所有节点。5. 匹配多个关系类型:MATCH (a)-[r:KNOWS|FRIEND...
Neo4j CQL - CREATE命令
Neo4j CQL(Cypher Query Language)是用于与Neo4j图数据库进行交互的查询语言。CREATE命令用于创建节点、关系以及它们的属性。以下是CREATE命令的一些示例:1. 创建节点(Node):CREATE (n:Label {key: 'value'})这将创建一个具有标签Label和属性key:value的节点。2. 创建关系(Relationship):CREATE (a)-[r:REL_TYPE]->(b)这将创建两个节点a和b之间的具有关系类型REL_TYPE的关系r。3. 创建带有多个属性的节点和关系:CREATE (n:Person {name: 'John', age: 30, city: 'New York'})-[:LIVES_IN]->(c:City {name: 'New York'})这将创建一个带有多个属性的Person节点,以及一个City节点,并在它们之间创建一个LIVES_IN关系。4. 创建具有动态属性的节点:CREATE (n:DynamicLa...