日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

neo4j图数据库

發布時間:2023/11/16 windows 56 coder
生活随笔 收集整理的這篇文章主要介紹了 neo4j图数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄
  • neo4j說明
  • docker-compose安裝
  • 命令
    • 創建節點
    • 創建節點關系
    • 創建節點并建立關系
    • 更新節點和關系
    • 查詢節點和關系
    • 刪除節點及關系
  • golang執行cypher命令--創建節點
  • golang執行cypher命令2--創建節點+建立關系

neo4j說明

	Neo4j是一個高性能的NOSQL圖形數據庫,它將結構化數據存儲在網絡上而不是表中。它是一個嵌入式的、基于磁盤的、具備完全的事務特性的Java持久化引擎,但是它將結構化數據存儲在網絡(從數學角度叫做圖)上而不是表中。在Neo4j中,數據以圖(網絡)的形式而非傳統的表的形式進行存儲。這種圖模型中,數據以節點(頂點)和邊的方式表示,節點可以表示實體,而邊則表示這些實體之間的各種關系。

這種數據模型的主要優點在于其快速解決復雜關系問題的能力。在Neo4j中,底層數據存儲專門針對圖形數據的特點進行了優化,因此在處理關系數據方面比其他數據庫有更高的性能。另外,由于Neo4j沒有表結構的概念,程序員可以在一個面向對象的、靈活的網絡結構下工作,而非嚴格、靜態的表結構,因此它比SQL更靈活。

Neo4j因其嵌入式、高性能、輕量級等優勢,越來越受到關注。

docker-compose安裝

version: '3'
services:
  neo4j:
    image: neo4j:4.4.27
    ports:
      - 7474:7474
      - 7687:7687
    volumes:
      - ./data:/data
      - ./logs:/logs
    environment:
      - NEO4J_AUTH=neo4j/123456

本地訪問:http://127.0.0.1:7474/

命令

創建節點

//創建節點
CREATE (node:Label {property: value})
eg:
CREATE (us:country {name: "美國"});
CREATE (ch:country {name: "中國"});
CREATE (sichuan:area {name: "四川省"});
CREATE (jiangsu:area {name: "江蘇省"});
CREATE (henan:area {name: "河南省"});
CREATE (hubei:area {name: "湖北省"});
CREATE (shanghai:city {name: "上海市"});
CREATE (beijing:city {name: "北京市"});

a:Person :標簽-->a屬于Person標簽
b:Person :標簽-->b屬于Person標簽

//創建帶有多個標簽和屬性的節點
CREATE (node:Label1:Label2 {property1: value1, property2: value2})
eg:
CREATE (a:Person:Person2 {name: "jeffTest",age:18});
CREATE (a:Person:Person2 {name: "jeffTest",age:18})

創建節點關系

//創建節點關系
MATCH (node1:Label1),(node2:Label2)
CREATE (node1)-[:RELATIONSHIP_TYPE]->(node2)

eg:
//北京市屬于中國關系
MATCH (n:city {name: "北京市"})
MATCH (ch:country {name: "中國"})
CREATE (n)-[:屬于]->(ch);

//上海市屬于中國關系
MATCH (n:city {name: "上海市"})
MATCH (ch:country {name: "中國"})
CREATE (n)-[:屬于]->(ch);

//帶有area標簽的全部屬于ch:country標簽
MATCH (n:area)
MATCH (ch:country {name: "中國"})
CREATE (n)-[:屬于]->(ch)


創建節點并建立關系

//創建節點并建立關系
CREATE (bazhong:city {name: "巴中市"})
MATCH (n:city {name: "巴中市"}),(ch:country {name: "中國"})
CREATE (n)-[:屬于]->(ch)


//創建節點并建立關系
CREATE (kunshan:city {name: "昆山市"});
MATCH (n:city {name: "昆山市"}),(k:area {name: "江蘇省"})
CREATE (n)-[:屬于]->(k)

更新節點和關系

//更新節點屬性
MATCH (n:city {name: "巴中市"})
SET n.peopNum = "200萬"


//更新關系屬性
MATCH (n:city {name: "巴中市"})-[r:屬于]->(k:city {name: "上海市"})
MATCH (y:area {name: "四川省"})
DELETE r
CREATE (n)-[:屬于]->(y)

查詢節點和關系

//查詢所有節點和關系
MATCH (node)
RETURN node

//查詢滿足條件的節點
MATCH (node:city)
WHERE node.name = "北京市"
RETURN node

//查詢節點關系
MATCH (node1)-[relationship:屬于]->(node2)
RETURN node1, relationship, node2

//查詢滿足條件的節點關系
MATCH (n:city)-[:屬于]->(k:area)-[:屬于]->(j:country)
WHERE n.name = "安陽市"
RETURN n, k,j
//查詢滿足條件的節點關系2
MATCH (n:city {name:"安陽市"})-[:屬于]->(k:area)-[:屬于]->(j:country)
RETURN n, k,j

刪除節點及關系

//刪除節點及關機
MATCH (n:city {name: "巴中市"})
OPTIONAL MATCH (ch:country {name: "中國"})-[relationship]-()
DELETE n, relationship

//刪除節點關系
MATCH (n:city {name: "巴中市"})-[relationship]-()
DELETE relationship

//刪除節點
MATCH (n:city {name: "新鄉市"})
DELETE n

//刪除所有節點關系
MATCH ()-[r]-() DELETE r  // 匹配所有節點之間的關系
//刪除所有節點
MATCH (n)  DELETE n

golang執行cypher命令--創建節點

package main

import (
	"fmt"
	"github.com/neo4j/neo4j-go-driver/v4/neo4j"
)

func main() {
	config := func(conf *neo4j.Config) {
		//conf.Encrypted = false                         // 啟用 TLS
		//conf.TLSCertFile = "/path/to/certificate.crt" // 設置 TLS 證書文件路徑
		//conf.TLSKeyFile = "/path/to/private.key"      // 設置 TLS 私鑰文件路徑
		//conf.TLSCAFile = "/path/to/ca.crt"            // 設置 TLS CA 證書文件路徑
	}

	// 創建驅動程序
	driver, err := neo4j.NewDriver("bolt://localhost:7687", neo4j.BasicAuth("neo4j", "123456", ""), config)
	if err != nil {
		// 處理錯誤
	}
	defer driver.Close()
	session := driver.NewSession(neo4j.SessionConfig{})
	defer session.Close()
	
  //命令
	cyhperStr := `
MATCH (n:city {name: "巴中市"})-[r:屬于]->(sichuan:area {name: "四川省"})
MATCH (shanghai:city {name: "上海市"})
DELETE r
CREATE (n)-[:屬于]->(shanghai)
`

	result, err := session.WriteTransaction(func(tx neo4j.Transaction) (interface{}, error) {

		result, err := tx.Run(cyhperStr, nil)
		if err != nil {
			return nil, err
		}

		return result, nil
	})
	if err != nil {
		// 處理錯誤
		fmt.Println("err:", err)
		return
	}
	fmt.Println(result)
}

golang執行cypher命令2--創建節點+建立關系

package main

import (
	"fmt"
	"github.com/neo4j/neo4j-go-driver/v4/neo4j"
)

func main() {
	config := func(conf *neo4j.Config) {
		//conf.Encrypted = false                         // 啟用 TLS
		//conf.TLSCertFile = "/path/to/certificate.crt" // 設置 TLS 證書文件路徑
		//conf.TLSKeyFile = "/path/to/private.key"      // 設置 TLS 私鑰文件路徑
		//conf.TLSCAFile = "/path/to/ca.crt"            // 設置 TLS CA 證書文件路徑
	}

	// 創建驅動程序
	driver, err := neo4j.NewDriver("bolt://localhost:7687", neo4j.BasicAuth("neo4j", "123456", ""), config)
	if err != nil {
		// 處理錯誤
	}
	defer driver.Close()
	session := driver.NewSession(neo4j.SessionConfig{})
	defer session.Close()

	cyhperStr := `CREATE (n:city {name: $name})` //創建節點
	//建立關系
	cyhperStr2 := `MATCH (n:city {name: $name}),(k:area {name: "河南省"})
CREATE (n)-[:屬于]->(k)`
	nameList := []string{"鄭州市", "洛陽市", "開封市", "新鄉市", "平頂山市", "焦作市", "安陽市", "鶴壁市", "漯河市", "南陽市", "信陽市", "周口市", "商丘市", "許昌市", "三門峽市", "駐馬店市", "濮陽市"}

	for _, name := range nameList {
		//創建節點
		_, err := session.WriteTransaction(func(tx neo4j.Transaction) (interface{}, error) {
			result, err := tx.Run(cyhperStr, map[string]interface{}{
				"name": name,
			})
			if err != nil {
				return nil, err
			}

			return result, nil
		})
		if err != nil {
			// 處理錯誤
			fmt.Println("err:", err)
			return
		}

		//建立關系
		_, err = session.WriteTransaction(func(tx neo4j.Transaction) (interface{}, error) {
			result, err := tx.Run(cyhperStr2, map[string]interface{}{
				"name": name,
			})
			if err != nil {
				return nil, err
			}

			return result, nil
		})
		if err != nil {
			// 處理錯誤
			fmt.Println("err:", err)
			return
		}
	}
}

總結

以上是生活随笔為你收集整理的neo4j图数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。