zoukankan      html  css  js  c++  java
  • Neo4j学习——基本操作(一)

    由于开始学习知识图谱,因此需要涉及到neo4j的使用
    一、介绍
    neo4j是一个图形数据库基于Java开发而成,因此需要配置jvm才可以运行
    配置请参考我前面的一篇blog:https://www.cnblogs.com/future-dream/p/9533757.html

    二、基本操作
    1、添加
    (1)节点的添加

    关键字:create;n是一个对象,用什么都可以,它的可以就是标签;节点信息(采用字典的格式):包括name、skill、master等等信息,这些key最后会作为property(属性)出现在property keys的内容中。

    create (n:华山{name:"令狐冲", skill:"易筋经", master:"岳不群"})

    结果:
    1)创建一个节点


    2)创建多个节点


    (2)关系的添加

    首先是获取两个关系对象,比如在添加"岳不群"和"令狐冲"的关系的时候,先建立两个对象,找出这两个点
    在通过对象指明的标签,根据具体的属性值来查找出两个节点信息,最后用create (a) - [r:师徒] ->(b);来创建关系(注:关系有方向)

    match (a:华山), (b:华山) where a.name = "岳不群" and b.name = "令狐冲" create (a)-[r:师徒]->(b);

    结果:


    (3)属性的增加
    首先确定节点的位置, 然后使用set函数来增加和修改属性,如果属性存在就修改,如果属性不存在则添加

    match (e:明教) set e.position = "master";

    结果:
    1)增加属性


    2)修改属性


    (4)跨标签建立关系
    建立两个对象,然后建立的同时限定对象,最后用 create (object) - [r:relationship] -> (object),完成跨标签关系的建立

    match (n:华山{name:"令狐冲"}), (m:衡山{name:"莫大"}) create (n) - [r:朋友] -> (m);

    结果:

     

    2、查找

    (1)单节点查询
    首先建立查找对象然后通过标识找出对应的节点

    match (e:华山) where e.name = "令狐冲" return e

    结果:

     

    (2)整个label查询
    与前面的操作一样,首先要建立一个对象(e)后面接标签确定要查找的节点信息,最后返回信息

    match (e:华山) return e;

    结果:

     
    (3)关系查询
    1)整体关系查询
    查找所有师徒关系的节点,并返回结果。p1,p2依旧是对象,同时用一个R来接收这些信息。

    match R = (p1:华山) - [r:师徒] ->(p2) return R;

    结果:


    2)单个关系查询
    加入p1和p2的限定条件就可以完成单个数据查询(注:由于关系是有方向的因此不可以交换否则数据查找会出现none)

    match R = (p1:华山) - [r:师徒] ->(p2) where p1.name="岳不群" and p2.name="令狐冲" return R;

    结果:

    正确结果


    空值结果

     
    3、删除
    先匹配后进行删除操作(注:必须先删除关系,后删除节点,否则无法删除节点)
    (1)关系删除
    delete r,n就可以将数据和关系全部删除,选择带关系的就全部删除关系,选择带节点就全部删除节点

    MATCH (n:令狐冲) - [r:朋友] -> (m:莫大) delete r;

    结果:


    (2)节点删除

    MATCH (n:武当) delete n; 

     结果:

     
    (3)属性标签删除
    建立对象然后进行条件限定,在删除属性

    MATCH (n:衡山{name:"莫大"}) remove n.id;

    结果:



    4、修改
    如上建立一个华山的对象,用set函数来完成属性值的修改(注:限定条件,否则数据全部修改,导致错误)

    MATCH (e:华山{name:"令狐冲"}) set e.skill = "吸星大法"

    结果:

     
    三、总结
    通过上诉介绍了关于neo4j的基本操作,因此可以通过Python来完成连接。
    (1)写一个易于理解的公式:
    match (object:label{}), (object:label{})  set/create object.attribute = "content";
    先进行匹配随便建一个对象object接收label里面的内容,{}里面加入限定条件,在逗号之后可以多次创建,一般是用来创建关系才会使用,再接方法。

    (2)建立关系的方法:
    create (object) - [r:relationship] -> (object)
    由于前面我们已经建立了两个对象,因此直接使用就可以了,其中的r也是任意的,它是关系对象的标识。

    (3)限制条件的方法:
    where object.attribute = "content"

    前面的对象加上对相应的属性,在设置content就可以了。
    其中除了attribute和content需要引号处理,其他的可以用中文。

    四、参考
    参考文档:http://neo4j.com.cn/public/cypher/neo4j_cql_remove.html

  • 相关阅读:
    SpringBoot实现原理
    常见Http状态码大全
    forward(转发)和redirect(重定向)有什么区别
    1094. Car Pooling (M)
    0980. Unique Paths III (H)
    1291. Sequential Digits (M)
    0121. Best Time to Buy and Sell Stock (E)
    1041. Robot Bounded In Circle (M)
    0421. Maximum XOR of Two Numbers in an Array (M)
    0216. Combination Sum III (M)
  • 原文地址:https://www.cnblogs.com/future-dream/p/10908738.html
Copyright © 2011-2022 走看看