02-neo4j的基本命令

来源:互联网 发布:微波遥感数据 编辑:程序博客网 时间:2024/06/17 21:59

1.插入节点。插入一个Person类别的节点,且这个节点有一个属性name,属性值为Andres

CREATE (n:Person {name : '梁川川'});CREATE (n:Person {name : '谢静静'});CREATE (n:Person {name : '谢霆锋',relation : "大舅"});CREATE (n:Person {name : '谢2',relation : "2舅"});CREATE (n:Person {name : '谢3',relation : "3舅"});CREATE (n:Person {name : '谢4',relation : "4舅"});

2.插入边。插入一条a到b的有向边,且边的类别为Follow r后面是关系

MATCH (a:Person),(b:Person)WHERE a.name = '梁川川' AND b.name = '谢静静'CREATE (a)-[r:喜欢]->(b);MATCH (a:Person),(b:Person)WHERE a.name = '谢静静' AND b.name = '谢霆锋'CREATE (a)-[r:大舅]->(b);MATCH (a:Person),(b:Person)WHERE a.name = '谢静静' AND b.name = '谢2'CREATE (a)-[r:二舅]->(b);MATCH (a:Person),(b:Person)WHERE a.name = '谢静静' AND b.name = '谢3'CREATE (a)-[r:三舅]->(b);MATCH (a:Person),(b:Person)WHERE a.name = '谢静静' AND b.name = '谢4'CREATE (a)-[r:权重4]->(b);CREATE (a)-[r:4]->(b);  r后面不能直接是数字CREATE (a)-[r:"4"]->(b); 加双引号 单引号都不行CREATE (a)-[r:权重4]->(b); 这样可以

3.更新节点。更新一个Person类别的节点,设置新的name。

MATCH (n:Person { name: '谢4' })SET n.name = '谢贵波';
  1. 删除节点。删除这个节点和这个节点有关的联系
MATCH (n:Person { name:'谢3' })DETACH DELETE n;CREATE (n:Person {name : '谢三舅',hobby : "看书"});CREATE (n:Person {name : '谢美美',hobby : "玩游戏"});MATCH (a:Person),(b:Person)WHERE a.name = '谢静静' AND b.name = '谢三舅'CREATE (a)-[r:三舅]->(b);MATCH (a:Person),(b:Person)WHERE a.name = '谢三舅' AND b.name = '谢美美'CREATE (a)-[r:女儿]->(b);MATCH (n:Person { name:'谢三舅' })DETACH DELETE n;MATCH (a:Person),(b:Person)WHERE a.name = '谢静静' AND b.name = '谢美美'CREATE (a)-[r:表妹]->(b);

5.删除边

MATCH (a:Person)-[r:Follow]->(b:Person)WHERE a.name = '梁川川' AND b.name = '谢静静'DELETE r;

6.查询最短路径。

MATCH (ms:Person { name:'梁川川' }),(cs:Person { name:'谢静静' }), p = shortestPath((ms)-[r:喜欢]-(cs)) RETURN p;CREATE (n:Person {name : '谢美颜',hobby : "看书"});MATCH (a:Person),(b:Person)WHERE a.name = '谢美美' AND b.name = '谢美颜'CREATE (a)-[r:姐妹]->(b);MATCH (ms:Person { name:'梁川川' }),(cs:Person { name:'谢美颜' }), p = shortestPath((ms)-[r:姐妹]-(cs)) RETURN p;(no changes, no records)

中间隔了一个不同的关系

7.查询两个节点之间的关系。

MATCH (a:Person { name:'梁川川' })-[r]->(b:Person { name:'谢美颜' })RETURN type(r);(no changes, no records)MATCH (a:Person { name:'梁川川' })-[r]->(b:Person { name:'谢静静' })RETURN type(r);"喜欢"

8.查询一个节点的所有Follower。

**MATCH (:Person { name:'谢静静' })-[r:喜欢]->(Person)RETURN Person.name;(no changes, no records)MATCH (:Person { name:'梁川川' })-[r:喜欢]->(Person)RETURN Person.name;"谢静静"**

关系是单向的

java版第一个程序

新建maven项目

从官网下载drive不好用,我是直接从 maven repository 查询的

    <!-- https://mvnrepository.com/artifact/org.neo4j.driver/neo4j-java-driver -->    <dependency>        <groupId>org.neo4j.driver</groupId>        <artifactId>neo4j-java-driver</artifactId>        <version>1.4.5</version>    </dependency>

通过代码创建节点

/** * Hello world! * */public class App {    public static void main( String[] args )    {        System.out.println( "Hello World!" );        Create();    }    private static void Create() {        // Driver driver = GraphDatabase.driver( "bolt://127.0.0.1", AuthTokens.basic( 用户名, 密码 ) );        Driver driver = GraphDatabase.driver( "bolt://127.0.0.1", AuthTokens.basic( "neo4j", "541711153" ) );        Session session = driver.session();        session.run( "CREATE (n:Person {name : '陈浩杰',hobby : '看书'})" );        session.close();        driver.close();    }}

执行可以看到页面http://127.0.0.1:7474/browser/ 多了一个节点

通过代码查询节点

 private static void Query() {        Driver driver = GraphDatabase.driver( "bolt://localhost", AuthTokens.basic( "neo4j", "541711153" ) );//调用地址,用户名和密码        Session session = driver.session();        StatementResult result = session.run( "MATCH (a: Person) WHERE a.name = '谢静静' RETURN a.name AS name" );        while ( result.hasNext() )        {            Record record = result.next();            System.out.println( record.get("name").asString() );        }        session.close();        driver.close();    }

============没试过
创建唯一性约束,同时具有索引效果,类似关系型数据库中的主键。注意,这只能在数据库中还未插入数据时设置。
CREATE CONSTRAINT ON (a:Person) ASSERT a.name IS UNIQUE;
创建索引。
CREATE INDEX ON :Person(name);
查看所有的节点数和边数
MATCH (n) RETURN count(n);
MATCH ()–>() RETURN count(*);

原创粉丝点击