➡ keyword: CREATE,句法如下:
(1)创建一个标签的节点:
CREATE(:)
★ 注意:如该节点已存在,也同样生成新的节点,只是id不同。
(2)创建多个标签的节点,多个标签之间用冒号隔开:
CREATE(:::...)
这里,m既是Movie又是Cinema, Film, Picture。
➡ keyword: CREATE,句法如下:
CREATE(: {
:,...,
:
)
★ 注意:属性的值,属性的值如是字符串string需添加双引号或单引号,如是数据不需添加。
➡ keyword: MATCH & CREATE,先使用MATCH命令检索现有的两个节点,再用CREATE命令创建它们之间的新关系。
MATCH (:,:)
CREATE (node1_name)-
[:{}]-
(node2_name)
(1)无属性举例:
★ 注意:若没有MATCH的过程,则默认生成新的2个节点和关系。
(2)有属性举例,创建具有两个属性的关系
★注意:
★★★注意:
关键字:SET,句法如下:
SET .,
.,
...
.,
.,
...
举例1:向节点添加属性。
给已存在的person类型中名为"Tom Hanks"的节点添加三个新属性:年纪=60,国家=USA,结婚?=Yes。
★注意:
举例2:向已有关系的添加属性。
名为Tom Hanks的节点与某电影节点存在关系"DIRECTED",给这个关系添加新属性:year=2021(这里以date()形式添加,故默认日期为2021-01-01)。
举例3:同时向节点和关系添加属性。
关键字:DELETE,这里删除节点的前提是该节点独立,即没有与其他节点的关系!句法如下:
//删除节点
MATCH (node_name: node_label_name{property_name:value,...})
DELETE node_name
//删除关系
MATCH (node1_name:node_label_name)-[rel:relationship_name]-(node2_name:node2_label_name)
DELETE rel
举例:
存在两个节点:node1名为Jennifer(label: person),node2名为Graphs(label:technology),两者之间的关系:rel:node1- LIKES - Graphs。
为此,需MATCH到整个模式,然后同时删除node1和rel。
上图可见删除成功!
方法一、MATCH模式然后DELETE节点和关系,见上。
方法二、MATCH节点,DETACH DELETE 节点,该方法删除的节点及该节点的所有关系,句法如下:
MATCH(node_name:node_label_name{properties-names-list})
DETACH DELETE node_name
举例:
删除节点名为jennifer的节点及其关系(如有多个关系,则会全部删除)。
方法一、使用关键字:REMOVE,句法如下:
MATCH(node_name:node_label_name)
REMOVE node_name.property_name
举例:
现有一个节点p(label为person,属性为{"name":"Jennifer","birthdate":"1990-01-01"}),现在删除其中的birthdate属性。
方法二、使用SET property.value = null,该方法利用了Neo4j默认null表示不存在的特点。
举例:上述例子也可以写成:
上文提到,CREATE可以创建出两个完全一样的节点(除了neo4j为其分配的id不同)和完全相同的关系,不存在重复创建属性的问题,因为属性以SET赋的最新值为准。
如果需要新节点不重复创建,可使用关键字:MERGE,MERGE先检索数据库中是否有该节点,如有则不重新创建,如没有则创建该节点,句法如下:
MERGE(node_name:node_label_name{properties_list})
举例:
如节点node{name:"lily"}不存在,则MERGE之后创建该节点:
★注意:
关键字:MATCH+MERGE,句法如下:
MATCH(node1_name:node1_label_name)
MATCH(node2_name:node2_label_name)
MERGE (node1_name)-[rel:relationship_value]-(node2_name)
举例:
已知node1{name:"Jennifer"}是node2{name:"Tom"}的朋友(rel:IS_FRIENDS_WITH},则MERGE(node1)-[rel:IS_FRIENDS_WITH]-(node2)不创建新的关系:
在MERGE的两步(MATCH 或 CREATE)过程中,可以对属性进行修改或新增属性,句法如下:
MERGE node1_name:node1_label_name)-[rel:relationship]-(node2_name:node2_label_name)
ON MATCH SET XXX_name.property = value
ON CREATE SET XXX_name.property = value
举例:
现有节点1:person{name:"Jennifer", birthdate:"12/12/1990"} 和 节点2:person{name:"Tom"},关系:(node1)-[rel:IS_FRIENDS_WITH]->(node2),则MERGE该模式后,仅执行ON MATCH SET语句,即:node1被添加新属性{nation:"CHICAGO"}。