Neo4j基础介绍

alt

For example, here is a query which finds a user called 'John' and 'John’s' friends (though not his direct friends) before returning both 'John' and any friends-of-friends that are found.

MATCH (john {name: 'John'})-[:friend]->()-[:friend]->(fof)
RETURN john.name, fof.name

Resulting in:

+----------------------+
| john.name | fof.name |
+----------------------+
| "John"    | "Maria"  |
| "John"    | "Steve"  |
+----------------------+
2 rows

Next up we will add filtering to set more parts in motion:

We take a list of user names and find all nodes with names from this list, match their friends and return only those followed users who have a 'name' property starting with 'S'.

MATCH (user)-[:friend]->(follower)
WHERE user.name IN ['Joe', 'John', 'Sara', 'Maria', 'Steve'] AND follower.name =~ 'S.*'
RETURN user.name, follower.name

Resulting in:

+---------------------------+
| user.name | follower.name |
+---------------------------+
| "Joe"     | "Steve"       |
| "John"    | "Sara"        |
+---------------------------+
2 rows

 

CREATE命令语法

CREATE (<node-name>:<label-name>)

 

语法说明

语法元素描述
CREATE它是一个Neo4j CQL命令。
<node-name>它是我们要创建的节点名称。
<label-name>它是一个节点标签名称

注意事项 -

 

1、Neo4j数据库服务器使用此<node-name>将此节点详细信息存储在Database.As中作为Neo4j DBA或Developer,我们不能使用它来访问节点详细信息。
 

2、Neo4j数据库服务器创建一个<label-name>作为内部节点名称的别名。作为Neo4j DBA或Developer,我们应该使用此标签名称来访问节点详细信息。

多个标签到节点

语法:

CREATE (<node-name>:<label-name1>:<label-name2>.....:<label-namen>)

MATCH命令语法:

MATCH 
(
   <node-name>:<label-name>
)

 

语法说明:

语法元素描述
<node-name>它是我们将要创建的节点名称。
<label-name>它是一个节点标签名称

 

要点 -

  • Neo4j数据库服务器使用此<node-name>将此节点详细信息存储在Database.As中作为Neo4j DBA或Developer,我们不能使用它来访问节点详细信息。

  • Neo4j数据库服务器创建一个<label-name>作为内部节点名称的别名。作为Neo4j DBA或Developer,我们应该使用此标签名称来访问节点详细信息。

单个标签到关系

语法:

CREATE (<node1-name>:<label1-name>)-
	[(<relationship-name>:<relationship-label-name>)]
	->(<node2-name>:<label2-name>)

查询并创建联系:

MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>) 
WHERE <condition>
CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name>
       {<relationship-properties>}]->(<node2-label-name>) 

RETURN命令语法:

RETURN 
   <node-name>.<property1-name>,
   ...
   <node-name>.<propertyn-name>

 

语法说明:

语法元素描述
<node-name>它是我们将要创建的节点名称。
<Property1-name>...<Propertyn-name>属性是键值对。 定义将分配给创建节点的属性的名称
  • 创建客户节点
CREATE (e:Customer{id:"1001",name:"Abc",dob:"01/10/1982"})
  • 创建CreditCard节点
CREATE (cc:CreditCard{id:"5001",number:"1234567890",cvv:"888",expiredate:"20/17"})
  • 观察先前创建的两个节点:Customer和CreditCard
MATCH (e:Customer)
RETURN e.id,e.name,e.dob

MATCH (cc:CreditCard)
RETURN cc.id,cc.number,cc.cvv,cc.expiredate

DELETE节点子句语法

DELETE <node-name-list>
S.No.语法元素描述
1.DELETE它是一个Neo4j CQL关键字。
2.<node-name-list>它是一个要从数据库中删除的节点名称列表。

 删除节点:

MATCH (e: Employee) DELETE e

DELETE节点和关系子句语法

DELETE <node1-name>,<node2-name>,<relationship-name>
S.No.语法元素描述
1.DELETE它是一个Neo4j CQL关键字。
2.<node1-name>它是用于创建关系<relationship-name>的一个结束节点名称。
3.<node2-name>它是用于创建关系<relationship-name>的另一个节点名称。
4.<relationship-name>它是一个关系名称,它在<node1-name>和<node2-name>之间创建。
MATCH (cc: CreditCard)-[rel]-(c:Customer) 
DELETE cc,c,rel

Neo4j CQL REMOVE命令用于

  • 删除节点或关系的标签
  • 删除节点或关系的属性

Neo4j CQL DELETE和REMOVE命令之间的主要区别 - 

  • DELETE操作用于删除节点和关联关系。
  • REMOVE操作用于删除标签和属性。

Neo4j CQL DELETE和REMOVE命令之间的相似性 - 

  • 这两个命令不应单独使用。
  • 两个命令都应该与MATCH命令一起使用

REMOVE属性子句语法

REMOVE <property-name-list>
S.No.语法元素描述
1。REMOVE它是一个Neo4j CQL关键字。
2。<property-name-list>它是一个属性列表,用于永久性地从节点或关系中删除它。
MATCH (dc:DebitCard) 
REMOVE dc.cvv
RETURN dc

 

REMOVE一个Label子句语法:

REMOVE <label-name-list> 
S.No.语法元素描述
1.REMOVE它是一个Neo4j CQL关键字。
2.<label-name-list>它是一个标签列表,用于永久性地从节点或关系中删除它。

SET子句语法

SET  <property-name-list>
S.No.语法元素描述
1SET它是一个Neo4j的CQL关键字。
2<property-name-list>它是一个属性列表,用于执行添加或更新操作以满足我们的要求。

 

MATCH (dc:DebitCard)
SET dc.atm_pin = 3456
RETURN dc

ORDER BY子句语法

ORDER BY  <property-name-list>  [DESC]	 
S.No.Syntax ElementDescription
1.ORDER BYIt is a Neo4j CQL keyword.
2.<property-name-list>It is a list of properties used in sorting.
3.DESCIt is a Neo4j CQL keyword used to specify descending order.It is optional.

UNION子句语法

<MATCH Command1>
   UNION
<MATCH Command2>

语法说明:

S.No.语法元素描述
1。<MATCH COMMAND1>它是CQL MATCH命令,由UNION子句使用。
2。<MATCH Command2>它是CQL MATCH命令两个由UNION子句使用。
3。UNION它是UNION子句的Neo4j CQL关键字。

注意 -

如果这两个查询不返回相同的列名和数据类型,那么它抛出一个错误。

如果属性的标签值不一样,联合是也会出现错误,。Union all  :不过滤重复的记录

MATCH (cc:CreditCard)
RETURN cc.id as id,cc.number as number,cc.name as name,
   cc.valid_from as valid_from,cc.valid_to as valid_to
UNION
MATCH (dc:DebitCard)
RETURN dc.id as id,dc.number as number,dc.name as name,
   dc.valid_from as valid_from,dc.valid_to as valid_to

 

LIMIT子句语法

LIMIT <number>   限制数量

SKIP子句语法:

SKIP <number>   间隔数量

Neo4j CQL MERGE语法

MERGE (<node-name>:<label-name>
{
   <Property1-name>:<Pro<rty1-Value>
   .....
   <Propertyn-name>:<Propertyn-Value>
})

语法说明:

S.No.语法元素描述
1MERGE它是一个Neo4j CQL关键字。
2<node-name>它是节点或关系的名称。
3<label-name>它是节点或关系的标签名称。
4<property_name>它是节点或关系的属性名称。
5<property_value>它是节点或关系的属性值。
6使用colon(:)运算符来分隔节点或关系的属性名称和值。

MERGE命令是CREATE命令和MATCH命令的组合。

MERGE = CREATE + MATCH

 MERGE命令在图中搜索给定模式,如果存在,则返回结果
如果它不存在于图中,则它创建新的节点/关系并返回结果。

 

IN操作符语法

IN[<Collection-of-values>]

语法说明:

S.No.语法元素描述
1。IN它是一个Neo4j CQL关键字。
2。[它告诉Neo4j CQL,一个值的集合的开始。
3。]它告诉Neo4j CQL,值集合的结束。
4。<Collection-of-values>它是由逗号运算符分隔的值的集合。
MATCH (e:Employee) 
WHERE e.id IN [123,124]
RETURN e.id,e.name,e.sal,e.deptno

ID是自增的。

 æ¥çTweetèç¹å±æ§

CQL自带的一些函数:

MATCH (e:Employee) 
RETURN e.id,UPPER(e.name),e.sal,e.deptno

聚合函数列表

S.No.聚集功能描述
1。COUNT它返回由MATCH命令返回的行数。
2。MAX它从MATCH命令返回的一组行返回最大值。
3。MIN它返回由MATCH命令返回的一组行的最小值。
4。SUM它返回由MATCH命令返回的所有行的求和值。
5。AVG它返回由MATCH命令返回的所有行的平均值。

关系函数列表

S.No.功能描述
1。STARTNODE它用于知道关系的开始节点。
2。ENDNODE它用于知道关系的结束节点。
3。ID它用于知道关系的ID。
4。TYPE它用于知道字符串表示中的一个关系的TYPE。

 Neo4j JAVA API

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路途…

点滴记录

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值