• 学习记录-neo4j语句


    创建节点

    CREATE (<node-name>:<label-name>)
    
    • node-name:要创建的节点名称,不能使用它来访问节点详细信息,可不写。
    • label-name:节点标签名称,使用此标签名称来访问节点详细信息。

    查询

    查询某label的节点

    MATCH (dept: Dept)
    RETURN dept.deptno,dept.dname,dept.location
    
    • dept只是个变量,可以填任意值
    • match (变量:标签名) return 返回值
    • 可返回节点也可返回节点的某些属性

    查询某label中属性为特定值的节点

    方式一:

    MATCH (dept: Dept{dept.deptno:'1'})
    RETURN dept
    
    • {属性:属性值} 多个属性的话,用逗号隔开

    方式二:

    MATCH (dept: Dept)
    WHERE dept.deptno = '1'
    RETURN dept
    

    从csv文件中导入节点

    速度慢,节点数量少的情况下可用:
    导入节点:

    LOAD CSV WITH HEADERS  FROM "file:///fileName.csv" AS line  
    MERGE (p:person{id:line.id,name:line.name,age:line.age}) 
    

    导入关系:

    LOAD CSV WITH HEADERS  FROM "file:///rel.csv" AS line
    match (from:person{id:line.from_id}),(to:person{id:line.to_id})  
    merge (from)-[r:rel{property1:line.property1,property2:line.property2}]->(to)
    

    节点数量多时可以采用: batch-import工具,速度快

    查询对相关节点有特定要求的节点

    查询有3个以上相关节点的node1节点:

    MATCH(a:node1) WITH a, Size((a)-[:usedby]->())AS ncount WHERE
    ncount>3 MATCH (a)-[:usedby]->(b) RETURN a, b
    

    多级查询

    如果只有一种节点且查询方向为单向链可参考博客:关于neo4j查询多深度关系节点
    例:查询从节点id为'12399145'的下一级及下下一级到节点

    match (na:company)-[re]->(nb:company) where na.id = '12399145' WITH na,re,nb match (nb:company)-[re2]->(nc:company) return na,re,nb,re2,nc
    

    返回从节点id为'12399145'的下一级到三级的节点

    match data=(na:company{id:'12399145'})-[*1..3]->(nb:company) return data
    
  • 相关阅读:
    使用yeoman搭建脚手架并发布到npm
    Facebook的一些基本操作(网页版)
    Egg中使用egg-mongoose和常用的Mongoose 方法
    Vuex的使用
    跨浏览器的javascript事件的封装
    利用ngnix解决跨域问题
    webpack打包工具
    用vue-cli脚手架搭建一个仿网易云音乐的全家桶vue项目
    mac 解决mysqlclient安装失败问题
    linux之wget
  • 原文地址:https://www.cnblogs.com/l999q/p/13396013.html
Copyright © 2020-2023  润新知