neo4j的基本使用

neo4j 基本使用

一、基础语法

1.创建节点:
CREATE (n:Label {name:"L1", type:"T1"})
2.查找节点:
MATCH(a:Test) WHERE a.id="1001" RETURN a;	//根据节点属性id进行查询
MATCH(a:Test{id:'1001'}) RETURN a;

MATCH(a:Test) WHERE id(a)="1001" RETURN a;	//根据neo4j自增id进行查询
3.创建多个节点和关系:
CREATE (节点1),(节点2),(节点3),(节点1)-[关系1]->(节点2),(节点2)-[关系2]->(节点3)
4.模式匹配:

根据关联进行数据查询。

MATCH (a)-[:Have]-(b)-[:Have]-(c)-[:Have]-(d) WHERE a.name="G1" RETURN a,b,c,d;
MATCH (a)-[*..3]-(d) WHERE a.name="G1" return a;

// 查询和 Cloud Atlas 有关的所有人以及关系
MATCH (people:Person)-[relatedTo]-(movie:Movie {title: "Cloud Atlas"}) RETURN people, relatedTo, movie;
// 查询 Kevin Bacon 和其他人的二层联系,关联关系不限
MATCH (bacon:Person {name:"Kevin Bacon"})-[*..2]-(hollywood) RETURN DISTINCT hollywood;
// 查询 Kevin Bacon 与 Meg Ryan 的最短关系
MATCH p=shortestPath((bacon:Person {name:"Kevin Bacon"})-[*]-(meg:Person {name:"Meg Ryan"})) RETURN p;
RETURN nineties.title
//查询 Tom Hanks 演过的电影,关系查询
MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies:Movie) RETURN tom,tomHanksMovies
//查询和TOM有关的合作演员
MATCH p=(tom:Person {name:"Tom Hanks"})-[r:ACTED_IN]->(m:Movie)<-[:ACTED_IN]-(coActors:Person) RETURN p
//查询 Kevin Bacon 的四级所有关系
MATCH (bacon:Person {name:"Kevin Bacon"})-[*1..4]-(hollywood) RETURN DISTINCT hollywood
//培根,与梅格·瑞恩关系中最短的一条路径
MATCH p=shortestPath((bacon:Person {name:"Kevin Bacon"})-[*]-(meg:Person {name:"Meg Ryan"})) RETURN p
//既和汤姆·汉克斯演过戏又和汤姆·克鲁斯演过戏的人
MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors),
  (coActors)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(cruise:Person {name:"Tom Cruise"})
RETURN tom, m, coActors, m2, cruise
5.更新节点(在意有标签中添加新属性):
MATCH(n:Label) WHERE n.name="N2" SET n.update = "2018-06-26" 
6.删除节点:
MATCH(n) WHERE ID(n)=100 DELETE n
7.查看语句分析:

在查询语句前加上

EXPLAIN 或者 PROFILE

二、java原生使用neo4j

1.pom.xml中引入neo4j的jar包:
<!-- 服务器开发需要的jar包 -->
<dependency>
  <groupId>org.neo4j.driver</groupId>
  <artifactId>neo4j-java-driver</artifactId>
  <version>1.5.0</version>
</dependency>

<!-- 嵌入式开发需要的jar包 -->
<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j</artifactId>
    <version>3.3.4</version>
</dependency>
2.实际使用
public static void main(String[] args) {
		// TODO Auto-generated method stub
		Driver driver = GraphDatabase.driver("bolt://127.0.0.1:7687",
				AuthTokens.basic("neo4j", "123456"));
		Session session = driver.session();

		session.run("CREATE (a:Person {name: {name}, title: {title}})",
				parameters("name", "gm", "title", "King"));

		StatementResult result = session.run(
				"MATCH (a:Person) WHERE a.name = {name} "
						+ "RETURN a.name AS name, a.title AS title",
				parameters("name", "gm"));

		while (result.hasNext()) {
			Record record = (Record) result.next();
			System.out.println(record.get("title").asString() + " "
					+ record.get("name").asString());
		}

		session.close();
		driver.close();
	}

三、springboot集成neo4j

1.pom文件中引入依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-neo4j</artifactId>
 </dependency>
2.yml配置

单机配置

spring:
  data:
    neo4j:
      uri: bolt://localhost:7687
      username: neo4j
      password: neo4j

集群配置

spring:
	data:
		neo4j:
		    # leader:ip1 follower:ip2 ,ip3
      		uri: bolt://ip1:7687
     	    uris: bolt://ip2:7687,bolt://ip3:7687
      		username: neo4j
            password:neo4j
3.创建节点的实体

( 有点类似于Mysql中的table 映射的对象类,mysql中叫做ORM,neo4j中叫做OGM [object graph mapping])

【节点的标签实体】

@NodeEntity(type = "supply")
@Builder
@Data
public class SupplyGraph {
    @GraphId
    private Long nodeId;
    
    @Id
    @GeneratedValue
    @Property(id = "id")
    private Long id;

    /**
     * 供应商名称
     */
    @Property(name = "name")
    private String name;


}

【关系实体】

# 供应关系(公司节点和供应商节点节点是供应关系)
@Data
@Builder
@RelationshipEntity(type = "supply")
public class SupplyRelationship {
    @Id
    @GeneratedValue
    private Long id;

    private String indexName;
     
    //关系的一端节点是 公司节点
    @StartNode
    private CompanyGraph company;
   
   //关系的另一端节点是 供应商节点
    @EndNode
    private SupplyGraph supply;
   
   //下面是关系的属性
    /**
     * 采购占比
     */
    @Property(name = "scale")
    private String scale;

    /**
     * 采购金额
     */
    @Property(name = "amount")
    private String amount;
}
4.编写repository
// 节点Repository
public interface SupplyGraphRepository extends Neo4jRepository<SupplyGraph,Long> {
    @Query("MATCH (n:supply) RETURN n ")
    List<SupplyGraph> getSupplyNodeList();

    @Query("create (n:supply{name:{name}}) RETURN n ")
    List<SupplyGraph> addSupplyNodeList(@Param("name") String name);
}
// 关系Repository
public interface SupplyRelationshipRepository extends Neo4jRepository<SupplyRelationship, Long> {}
5.创建neo4j配置类
@Configuration
@EnableNeo4jRepositories(basePackages = "io.fredia.femicro.graph.repository")
@EnableTransactionManagement // 激活SDN隐式事务
public class Neo4jConfig {
}

保留关键字,不可用做属性

关键字说明关键字说明关键字说明关键字说明
从句
CALLOPTIONALFOREACHUNION
CREATEREMOVEMATCHUNWIND
DELETERETURNLOADWITH
DETACHSETMERGESTART
EXISTS
子句
LIMITORDERSKIPWHERE
YIELD
修饰语
ASCASCENDINGASSERTBY
CSVDESCDESCENDINGON
表达式
ALLCASEELSEEND
THENWHEN
操作符
ANDASCONTAINSDISTINCT去重
ENDSINISNOT
ORSTARTSXOR
Schema
CONSTRAINTCREATEDROPEXISTS
INDEXNODEKEYUNIQUE
Hints
INDEXJOINPERIODICCOMMIT
SCANUSING
常量
falsenulltrue
备用
ADDDOFORMANDATORY
OFREQUIRESCALAR

常用函数

函数描述函数描述
UPPER它用于将所有字母更改为大写字母。LOWER它用于将所有字母改为小写字母。
SUBSTRING它用于获取给定String的子字符串。REPLACE它用于替换一个字符串的子字符串。
COUNT它返回由MATCH命令返回的行数。MAX它从MATCH命令返回的一组行返回最大值。
MIN它返回由MATCH命令返回的一组行的最小值。SUM它返回由MATCH命令返回的所有行的求和值。
AVG它返回由MATCH命令返回的所有行的平均值。shortestPath查询最短路径
collect收集??
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Neo4j 是一款流行的图数据库,它允许你以图形方式表示和管理数据。以下是 Neo4j基本使用方法: 1. 下载和安装:首先,你需要从 Neo4j 的官方网站下载并安装适合你操作系统的版本。 2. 启动 Neo4j 服务器:安装完成后,你可以启动 Neo4j 服务器。打开终端或命令提示符,并转到 Neo4j 安装目录下的 bin 文件夹。执行启动命令,如 neo4j start(Windows)或 ./neo4j start(Mac/Linux)。 3. 访问 Neo4j 浏览器:一旦服务器启动,你可以在浏览器中访问 Neo4j 图形界面。默认情况下,它会在 http://localhost:7474 上运行。打开浏览器并导航到该地址。 4. 创建图节点和关系:在 Neo4j 浏览器中,你可以使用 Cypher 查询语言创建节点和关系。例如,创建一个名为"Person"的节点,可以执行以下查询: CREATE (:Person {name: 'John', age: 30}) 5. 查询图数据:使用 Cypher 查询语言可以执行各种操作,如节点和关系的创建、更新、删除以及复杂的图查询。例如,查询所有名为"Person"的节点: MATCH (p:Person) RETURN p 6. 使用 Neo4j 的驱动程序:如果你想在应用程序中使用 Neo4j 数据库,可以使用相应的驱动程序。Neo4j 支持多种编程语言的驱动程序,如 Java、Python、JavaScript 等。 请记住,这只是 Neo4j基本使用方法。Neo4j 还提供了许多高级功能,如图形算法、索引、事务管理等,你可以进一步探索和学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值