欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-28 20:25:28
...

序言:本节接着上一章简单的介绍之后,继续学习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

结果如下:
插入查询用户以及建立关系

对代码进行解释:

  • 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 张袁旭
相关标签: 数据库 neo4j