美文网首页
Mac Neo4j安装与使用 2020-05-09

Mac Neo4j安装与使用 2020-05-09

作者: 五道口的程序狐 | 来源:发表于2020-05-09 13:42 被阅读0次

    关于图数据库的一些介绍

    https://www.cnblogs.com/mantoudev/p/10414495.html

    摘录一下:

    图数据很多,图数据库比普通的要更快

    neo4j的教程在:https://www.w3cschool.cn/neo4j/

    Neo4j安装

    https://neo4j.com/,点右上角的 DOWNLOAD NEO4J就行。之后填一个表(表单加载挺慢的,得等会),就能下载了。会给一个激活密钥。

    我用的Mac,下载链接:https://neo4j.com/artifact.php?name=neo4j-desktop-offline-1.2.4.dmg

    Activation Key:

    eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyIgSG9sZGluZyBDby4sIEx0ZC4iOiIiLCJjYWxsYmFjayI6IiIsImVtYWlsIjoiaUBodWF3ZWkuY29tIiwiZm9ybWF0IjoianNvbiIsIm9yZyI6Ikh1YXdlaSBJbnZlc3RtZW50ICIsInB1YiI6Im5lbzRqLmNvbSIsInJlZyI6Ikh1YSBXZWkiLCJzdWIiOiJuZW80ai1kZXNrdG9wIiwiZXhwIjoxNjIwNTI4Nzg5LCJ2ZXIiOiIqIiwiaXNzIjoibmVvNGouY29tIiwibmJmIjoxNTg4OTkyNzg5LCJpYXQiOjE1ODg5OTI3ODksImp0aSI6InJHN2RxWmFJYiJ9.pN66t95DNK0rMfcu7D-XnET7gx6IrFgSZg1VmUBciXyTzgnpUzWtlW3MZCaerL0IWO5ZQfmEgX25pAU3Pmq6SlZvW462fZluxgEOw9wfrNhbjCVXSM70bv2tpKoIk9I8xySOaVMOsZ16SZRtlo0QAvaNizaZiMTSy-kdr2t2hzzV4bSgSJ--gBg-nwVBrcPJZfMcEii_zNrOvGkV3LcvRoU8aHRucCLosNxrhmc0Ug-SxnYGU7beJB6pgVAf57TSlU7Cv6rj0aDY_KcWCyCb4r-XvBu-ZVtzxDziYWjF-CWOBotnxEZWA89QM8J-c-DF82CPCUmuzWzj1t4KNDK-9g
    

    直接把dmg文件打开,应用拖到Application里面就行了。之后打开就会自动安装配置,用上面的Activation Key就可以,或者新注册一下。

    创建

    主页选择创建数据库,之后选create local graph 创建好之后选择启动

    之后可以点击manage,让它启动后按下open browser打开浏览器进行管理

    浏览器中管理

    在上面这个地方有写用户名是neo4j,网址和端口也有

    使用

    节点

    CREATE (n:Student {name:'张三'}) RETURN n

    CREATE (n:Teacher {name:'罗翔'}) RETURN n

    创建两个节点

    MATCH (n:Teacher {name:'罗翔'}) DELETE n

    接下来再新增一个罗老师:CREATE (n:Teacher {name:'罗翔'}) RETURN n

    添加边

    MATCH (a: Teacher {name:'罗翔'}), (b: Student {name:'张三'}) MERGE (a)-[:审判]->(b)

    查询

    查询所有节点

    MATCH (n) RETURN n LIMIT 25

    查询结果

    查询所有边的起始节点

    MATCH (a)-->() RETURN a

    忽略边的方向,查询所有关系的节点

    MATCH (a)--() RETURN a LIMIT 25

    边查询结果

    MATCH (a)-[:审判]-() RETURN a LIMIT 25

    MATCH (a)-[r]->(b) return a, b, r

    注意:选择出来的结果不会做边的筛选

    假如有两个关系,添加一个MATCH (a: Teacher {name:'罗翔'}), (b: Student {name:'张三'}) MERGE (a)-[:教导]->(b)

    MATCH (a)-[r:审判]->(b) RETURN a, b, r

    结果直接呈现两个关系

    现在有俩关系了

    删除边

    MATCH ()-[r: 教导]->() DELETE r

    属性

    MATCH (a:Student {name:'张三'}) SET a.test='test'
    MATCH (a:Student {name:'张三'}) REMOVE a.test

    Python

    这里使用和前面的语言一样的操作,不过为了区分这里用的是中文的label

    pip install py2neo

    安装好就可以连接了,注意协议不是http,是bolt

    from py2neo import Graph,Node,Relationship
    
    graph = Graph('bolt://localhost:7687',username='neo4j',password='123456')
    a = Node('学生', name='张三')
    b = Node('教师', name='罗翔')
    graph.create(a)
    graph.create(b)
    

    这时我们在数据库里面可以看到:

    用Python创建后
    r = Relationship(b,'审判',a)
    graph.create(r)
    
    from py2neo import NodeMatcher
    luo = NodeMatcher(graph).match('教师',name='罗翔')  # 相当于graph.nodes.match('教师',name='罗翔')
    print(len(luo))
    # 不能用luo[0]
    print(luo.first())
    print(luo.first().__name__)
    for i in luo:
        print(i)
        print(i['name'])
    print(luo.graph.nodes)
    for i in luo.graph.relationships:
        print(i)  # 这里会有bug,一些已经删除过的边会仍然留在里面,导致这里报错
    graph.delete(luo.graph.relationships[0])  # 注意这里的0不是下标!是边的ID
    # 搜索边
    ans = graph.match(nodes=None, r_type='审判')
    for i in ans:
        print(i)
        print(i.identity)  # 这里是ID
    

    相关文章

      网友评论

          本文标题:Mac Neo4j安装与使用 2020-05-09

          本文链接:https://www.haomeiwen.com/subject/gtwhnhtx.html