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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(三)Neo4j自带northwind案例--Cypher语言应用

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (三)Neo4j自带northwind案例--Cypher语言应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0、概述

通過該案例,應用Cypher查詢語言,感受Neo4j套路。官方的用此案例的用意:

The?Northwind Graph?demonstrates how to migrate(遷移) from a relational database to Neo4j(把一個負責的多表關系數據庫關系等價轉化為圖數據中,并且查詢表現出巨大的優勢). The transformation is iterative and deliberate, emphasizing the conceptual shift from relational tables to the nodes and relationships of a graph.

This guide will show you how to:

  • Load: create data from external CSV files(加載數據)
  • Index: index nodes based on label
  • Relate: transform foreign key references into data relationships
  • Promote: transform join records into relationships
  • 1、找到位置

    :play start

    彈出如下界面:

    northwind

    點擊中間的“Jump into code”,進入到如下界面:

    Northwind

    ?

    這里有Movie Graph和Northwind Graph兩個案例,這里演示第二個案例。

    2、?Load: create data from external products CSV files

    LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/products.csv" AS row CREATE (n:Product) SET n = row, n.unitPrice = toFloat(row.unitPrice), n.unitsInStock = toInteger(row.unitsInStock), n.unitsOnOrder = toInteger(row.unitsOnOrder), n.reorderLevel = toInteger(row.reorderLevel), n.discontinued = (row.discontinued <> "0")------------------------------------------------------------------------- 1、LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/products.csv" AS row return row,這個row到底是什么呢? {"reorderLevel": "10","unitsInStock": "39","unitPrice": "18.00","supplierID": "1","productID": "1","discontinued": "0","quantityPerUnit": "10 boxes x 20 bags","categoryID": "1","unitsOnOrder": "0","productName": "Chai" } {"reorderLevel": "25","unitsInStock": "17","unitPrice": "19.00","supplierID": "1","productID": "2","discontinued": "0","quantityPerUnit": "24 - 12 oz bottles","categoryID": "1","unitsOnOrder": "40","productName": "Chang" } .....(后面還有) 2、SET n = row 是建立了77 labels,對應到關系數據庫就是用上面的屬性結構和數據建立了77條紀律; 3、n.unitPrice = toFloat(row.unitPrice), 有些屬性要用Neo4j的字段類型進行強制說明,以免出錯;

    3、?Load: create data from external categories CSV files

    LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/categories.csv" AS row CREATE (n:Category) SET n = row

    4、?Load: create data from external suppliers CSV files

    LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/suppliers.csv" AS row CREATE (n:Supplier) SET n = row

    5、Create indexes

    # 以下三個分開執行 CREATE INDEX ON :Product(productID) CREATE INDEX ON :Category(categoryID) CREATE INDEX ON :Supplier(supplierID)

    6、Create data relationships

    # Product和Category建立PART_OF關系,一個Category可以有多個Product, # 這個是很自然的隸屬關系(PART_OF),注意where的這種查詢方式 MATCH (p:Product),(c:Category) WHERE p.categoryID = c.categoryID CREATE (p)-[:PART_OF]->(c)# 查詢所建立的PART_OF關系 MATCH p=()-[r:PART_OF]->() RETURN p LIMIT 80000

    形成的圖關系如下所示,里面顯示的數量可以簡單分析一下,所有的Product(77)都找到了隸屬的類,一共隸屬8個Category(8),所以下圖中共有8組圖,共有77+8=85(nodes)。

    查詢PART_OF關系 # 建立Products和Supplier之間的關系 MATCH (p:Product),(s:Supplier) WHERE p.supplierID = s.supplierID CREATE (s)-[:SUPPLIES]->(p)# 查詢關系如下圖 MATCH p=()-[r:SUPPLIES]->() RETURN p LIMIT 2555 查詢SUPPLIES關系

    7、Query using patterns

    # 查詢關聯上的nodes MATCH (s:Supplier)-->(:Product)-->(c:Category) RETURN s.companyName as Company, collect(distinct c.categoryName) as Categories# collect(distinct c.categoryName)是做了去重處理,一個s:Supplier可以 # 有很多Product,每一個Product只對應一個c:Category,所有一個s:Supplier # 的兩件不同的Product可能對應相同的c:Category

    查詢結果如下:

    這樣的查詢時不直觀的,既然建立了三種節點之間的兩種關系,那么在圖譜中是什么樣子呢?

    # 查詢PART_OF和SUPPLIES兩種關系的節點 MATCH p=()-[r1:PART_OF]-()-[r2:SUPPLIES]-() RETURN p LIMIT 2500 All Relation

    ?

    # 一個s:Supplier可以對應多個Product # 一個Product屬于一個categoryName # 查詢可以提供Produce類別Product的s:Supplier,返回結果去重 MATCH (c:Category {categoryName:"Produce"})<--(:Product)<--(s:Supplier) RETURN DISTINCT s.companyName as ProduceSuppliers

    8、?Load: create data from external Customer、Orders?CSV files

    LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/customers.csv" AS row CREATE (n:Customer) SET n = rowLOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/orders.csv" AS row CREATE (n:Order) SET n = rowCREATE INDEX ON :Customer(customerID)CREATE INDEX ON :Order(orderID)

    9、Create data relationships

    MATCH (c:Customer),(o:Order) WHERE c.customerID = o.customerID CREATE (c)-[:PURCHASED]->(o)MATCH p=()-[r:PURCHASED]->() RETURN p LIMIT 25 查詢PURCHASED關系

    ?

    10、?Load: create data from external order-details?CSV files

    # 到這一步實體對象就多了,之前有: # Sublier-[:SUBLIES]->Product-[:PART_OF]->Category # Customer-[:PURCHASED]->Order # 上面兩種圖之間是不聯通的,下面還要建立Order-[details:ORDERS]->p:Product) # 這樣所有的實體都聯通了,注意多次執行不會覆蓋,會建立重名ORDERS關系,本質上是兩個系統id LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/order-details.csv" AS row MATCH (p:Product), (o:Order) WHERE p.productID = row.productID AND o.orderID = row.orderID CREATE (o)-[details:ORDERS]->(p) SET details = row, details.quantity = toInteger(row.quantity)

    11、Query using patterns

    # 圖數據庫的匹配是一種結構匹配,而不是屬性值匹配 # 譬如(cust:Customer)-[:PURCHASED]->(:Order)-[o:ORDERS]->(p:Product)- # [:PART_OF]->(c:Category {categoryName:"Produce"})就是一種結構 # 下面的意思是說:找到買Produce類的Customer的名字,并且計算該用戶訂單上 # 所有Product價格的總和,這在電商中是非常有意義的 # 和關系數據庫相比,這就體現了圖數據庫多個表鏈接查詢的重大優勢 MATCH (cust:Customer)-[:PURCHASED]->(:Order)-[o:ORDERS]->(p:Product)-[:PART_OF]->(c:Category {categoryName:"Produce"}) RETURN DISTINCT cust.contactName as CustomerName, SUM(o.quantity) AS TotalProductsPurchased# 官網給出的是如下的方式,和上面等價的 MATCH (cust:Customer)-[:PURCHASED]->(:Order)-[o:ORDERS]->(p:Product),(p)-[:PART_OF]->(c:Category {categoryName:"Produce"}) RETURN DISTINCT cust.contactName as CustomerName, SUM(o.quantity) AS TotalProductsPurchased

    12、我們的圖譜長什么樣子呢?

    圖譜結構 # 圖關系要拆分成具有線性關系的r1,r2,鏈接起立展示 MATCH r1=(cust:Customer)-[:PURCHASED]->(:Order)-[o:ORDERS]->(p:Product),r2=(sup:Supplier)-[:SUPPLIES]-(p)-[:PART_OF]->(c:Category {categoryName:"Produce"}) RETURN r1, r2 limit 1 圖譜展示

    ?

    總結

    以上是生活随笔為你收集整理的(三)Neo4j自带northwind案例--Cypher语言应用的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 欧美激情va永久在线播放 | 综合xx网| 麻豆md0077饥渴少妇 | 国产欧美一区二区三区在线看蜜臂 | 久草福利资源 | 色综合加勒比 | 玖草在线| 黄色大片在线播放 | 白丝校花扒腿让我c | 少妇高潮久久久久久潘金莲 | 懂爱av| 亚洲乱色熟女一区二区三区 | www.黄色片.com | 国产精品久久久久久久久久久久久久久久久 | 欧美综合第一页 | 亚洲另类网站 | 在线观看成人网 | 午夜一级视频 | 插骚| 成人啪啪18免费游戏链接 | 国产精品久久久久久久9999 | 特级性生活片 | 精品无码国产一区二区三区av | 免费不卡av在线 | 久热最新 | 亚洲一区二区天堂 | 在线观看www | 一区二区欧美视频 | 久久精品欧美一区二区三区麻豆 | 国产精品88久久久久久妇女 | 一区二区三区在线免费观看视频 | 精品人人| 中国精品久久久 | 欧美一区二区三区在线视频 | 日韩欧美日韩 | 少妇又色又紧又爽又刺激视频 | 欧美午夜精品一区二区 | 欧美色鬼| 亚洲欧美在线免费观看 | 欧美人与禽zoz0性3d | av在线色| 亚洲人体视频 | 亚洲人成电影在线 | 亚洲成人av一区二区 | 毛片哪里看 | 国产偷拍一区二区三区 | 国产一区91精品张津瑜 | 日批视频在线免费看 | 在线观看视频 | 国产一区二区三区免费观看视频 | 日韩精品一区二区三区在线观看 | 亚洲码欧美码一区二区三区 | 18禁男女爽爽爽午夜网站免费 | 91天天| 91欧美激情一区二区三区 | 无码视频一区二区三区 | 少妇光屁股影院 | 国精产品一区一区三区有限公司杨 | 亲嘴脱内衣内裤 | 亚洲天堂偷拍 | 在线se | 97人妻人人揉人人躁人人 | 欧美一区二区三区在线观看视频 | 国产三级在线观看视频 | 丝袜国产在线 | 正在播放久久 | 欧美人与性动交α欧美精品 | 久草网在线 | 黄色网日本 | 一级片www | 东京热毛片| 日韩专区一区 | 天堂在线视频 | www.夜夜骑 | 国产91精品欧美 | 亚洲欧美国产另类 | 午夜婷婷网 | 在线观看黄av | 69视频免费在线观看 | 国产在线视频你懂的 | 视频在线观看你懂的 | 成人高清免费 | 蜜臀av无码精品人妻色欲 | 黑丝av在线 | 久久涩综合| 性色一区二区三区 | 国产高清视频免费观看 | 亚洲人妻一区二区 | 久久久久久久久久久av | 国产高清一级 | 97精品国产97久久久久久粉红 | 黄色一级网| 久久久国产精品成人免费 | 中文字幕免费观看视频 | 99久久精品免费看国产免费软件 | 色呦呦在线免费观看 | av在线最新 | 久久综合综合久久 | 被扒开腿一边憋尿一边惩罚 |