02-neo4j的基本命令

在这里插入图片描述

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(*);

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Neo4j是一个图形数据库,用于存储和查询复杂的关系数据。将Neo4j部署到Kubernetes (k8s) 可以帮助您实现服务化、高可用性和自动扩展。以下是部署的基本步骤: 1. **创建Docker镜像**: 首先,需要有一个包含Neo4j的Dockerfile,这通常包括基础镜像、配置文件以及Neo4j的安装脚本。 2. **构建Docker镜像**: 使用`docker build`命令构建自定义的Neo4j Docker镜像,并推送至私有或公共仓库如Docker Hub。 3. **创建Kubernetes Deployment**: 创建一个YAML配置文件(如`neo4j-deployment.yaml`),其中包含了Pod模板,定义了所需的实例数、复制集大小以及其他资源限制。还需要指定应用的容器镜像名称和端口映射。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: neo4j spec: replicas: 3 selector: matchLabels: app: neo4j template: metadata: labels: app: neo4j spec: containers: - name: neo4j image: your-neo4j-image:latest ports: - containerPort: 7474 # HTTP访问端口 - containerPort: 7687 # Bolt协议端口 ``` 4. **创建Service**: Service是用来暴露应用内部IP的抽象层,可以提供负载均衡和域名访问。创建一个YAML文件(如`neo4j-service.yaml`)定义访问策略和端点。 ```yaml apiVersion: v1 kind: Service metadata: name: neo4j-service spec: type: ClusterIP selector: app: neo4j ports: - name: http port: 80 targetPort: 7474 - name: bolt port: 2181 targetPort: 7687 ``` 5. **部署到k8s**: 使用`kubectl apply`命令将上述两个YAML文件应用到集群: ```sh kubectl apply -f neo4j-deployment.yaml kubectl apply -f neo4j-service.yaml ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九师兄

你的鼓励是我做大写作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值