序言:本节接着上一章简单的介绍之后,继续学习Neo4j这门语言文笔不好尽量用简单的语言来让读者易读易懂,本文的内容都是我在学习的过程中一点点积累的.
1.建立一个数据库
CREATE ( dot : User {age : “”,name: “”});
解释:建立一个节点名称是 dot,节点标签是User 的数据库,它包含两个属性,age 和 name.
说明:
-
Neo4j 数据库服务器用此 <node -name> (dot) 将此节点详细信息存储在Database.As中作为
Neo4j DBA或Developer,我们不能使用它来访问节点详细信息 -
Neo4j数据库服务器创建一个 <label -name> 作为内部节点名称的别名.作为Neo4j DBA或 Developer
,我们应该使用此标签名称来访问节点详细信息.
注意:一定要注意
查询数据库时,match 和 return 语句不能单独使用,必须结合使用
如下:
match (dot : User)
return dot.name,dot.age
结果返回:该数据库中所有的name 和age 字段
例:查询标签是 User 下的所用用户:
match (dot : User)
return dot
结果:
返回dot 该节点下,所有的数据.可以以表展示,可以以节点展示…
2.CQL — 关系基础
说明:
-
Neo4j 图形数据库遵循属性图模型来存储和管理其数据.
-
根据属性图形模型,关系应该是定向的.否则,Neo4j将抛出一个错误消息
基于方向性,Neo4j关系被分为两种主要类型.
-
1.单向关系
-
2.双向关系
在下列场景中,我们可以使用Neo4j CQL CREATE 命令来创建两个节点之间的关系
1.在两个现有节点之间创建无属性的关系
2.在两个现有节点之间创建于属性的关系
3.在两个节点之间创建无属性的关系.
4.在两个新节点之间创建于属性的关系.
5.在具有WHERE 子句的两个退出节点之间创建/不使用属性的关系.
如下事例:
在User中的两个用户之间,建立一条TestShip,起点是Test1,结束点是Test2,单向关系
CREATE(userA:User{name:"Test1",age:"35"})
CREATE(userB:User{name:"Test2",age:"36"})
CREATE (userA)-[:TestShip]->(userB)
说明:建立关系时一定要注意指明关系的方向性,也就是一定要有起始点结束点,否则会报错.
查询在User用户表中,name 为 Test1,以及name 为Test2之间的关系:
查询代码如下:
MATCH p = (userA:User{name:"Test1"}) -[]-(userB:User{name:"Test2"})
RETURN p
结果如下:
对代码进行解释:
-
1.在User 表中查询name 为 "Test1"的用户.
-
2.与User中查询name为"Test2"之间的联系.
-
3.在本例中没有指明方向,所以关系从userA->userB,以及userB->userA都是本例要查询的.
-
4.由于我们再建立关系时的方向是userA->userB,所以查询的结果就是 "Test1"的用户 ->"Test2"的用户.
3.对于本章课程总结
-
1.在插入用户时,最好在声明的属性中有一个是唯一的不重复的,例如uid属性,就类似于mysql中的主键,方便根据唯一标识符进行用户查询,更新信息,以及关系的建立以及查询.
-
2.在插入用户时,可以用CREATE或者MERGE命令,二者区别就在于,如果你插入两条或以上的数据完全相同,CREATE不管是否重复只管添加新数据,但是MERGE会合并也可以理解为更新相同的数据.
-
3.在建立关系时,可以根据需要来创建单向或者双向关系,无论单向还是双向在建立关系时一定要指明关系的方向.
-
4.在查询关系时,查询的方向可以指定起始节点,也可以不指定,具体由需求而定.
-
5.本例中建立的TestShip关系,只是一个简单的事例,关系中也可以和节点中一样,包含属性相关事宜,具体可根据需求来定.
备注:转载请注明,请尊重原创者的劳动成果,谢谢配合
如果有不明白或者有什么建议,欢迎在评论下方留言,我会尽力在第一时间回复的.欢迎大家来共同讨论学习.
### iOS 张袁旭