插入查询用户以及建立关系

来源:互联网 发布:矩阵的幂运算法则 编辑:程序博客网 时间:2024/05/21 14:54

序言:本节接着上一章简单的介绍之后,继续学习Neo4j这门语言文笔不好尽量用简单的语言来让读者易读易懂,本文的内容都是我在学习的过程中一点点积累的.

1.建立一个数据库

CREATE ( dot : User {age : “”,name: “”});

解释:建立一个节点名称是 dot,节点标签是User 的数据库,它包含两个属性,age 和 name.

说明:

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

  • Neo4j数据库服务器创建一个

注意:一定要注意

查询数据库时,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

结果如下:
image

对代码进行解释:

  • 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 张袁旭
原创粉丝点击