常用函数
功能 |
描述 |
---|---|
UPPER |
它用于将所有字母更改为大写字母。 |
LOWER |
它用于将所有字母改为小写字母。 |
SUBSTRING |
它用于获取给定String的子字符串。 |
REPLACE |
它用于替换一个字符串的子字符串。 |
聚集函数 |
描述 |
COUNT |
它返回由MATCH命令返回的行数。 |
MAX |
它从MATCH命令返回的一组行返回最大值。 |
MIN |
它返回由MATCH命令返回的一组行的最小值。 |
SUM |
它返回由MATCH命令返回的所有行的求和值。 |
AVG |
它返回由MATCH命令返回的所有行的平均值。 |
取字符串 match(n:hero) return substring(n.name, 0,2), n.name 计数 match(n:hero) return count(n) Neo4j无 group by Match (n:Person) return count(*) Match (n:Person) return avg(n.age) 只包含age不为空的node
shortestPath 查询最短路径
应用理论:6层关系理论:任何两个事物之间的关系都不会超过6层 查询最短路径的必要性 allShortestPaths [*..n] 用于表示获取n层关系
match p = shortestpath((:hero{name:"孙尚香"})-[*..3]-(:hero{name:"武则天"})) return p match p = allshortpath((:hero{name:"孙尚香"})-[*..3]-(:hero{name:"武则天"})) return p

image.png
正则
(n)-->(m) Relationship from n to m. (n)-[*1..5]->(m) Variable length path of between 1 and 5 relationships from n to m.
collect
查询如下3个表的全部内容:哪些公司卖哪些货?
MATCH (s:Supplier)-->(:Product)-->(c:Category) RETURN s.companyName as Company, collect(distinct c.categoryName) as Categories
collect(distinct c.categoryName) 单独对c.categoryName去重
数据导入
1.load
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")
2.import 将csv文件放到import目录中
// 将hudong_pedia.csv 导入 LOAD CSV WITH HEADERS FROM "file:///hudong_pedia.csv" AS line CREATE (p:HudongItem{title:line.title,image:line.image,detail:line.detail,url:line.url,openTypeList:line.openTypeList,baseInfoKeyList:line.baseInfoKeyList,baseInfoValueList:line.baseInfoValueList})
3.用python接口导入文件
import json from py2neo import Node ,Graph,Relationship 直接用pandas读取文件,或者用json解析数据,用NODE创建节点,用find_one读取节点,用relation创建关系 g=Graph("http://localhost:7474", username="neo4j", password="012464998") g.run("MATCH (n) OPTIONAL MATCH (n)-[r]-()DELETE n,r") with open("属性.json","r",encoding='utf-8')as f: da = f.readlines() # print(da[1]) for i in range(len(da)): data = eval(da[i]) shuxing = [i for i in data.keys()] # print(shuxing) sx_zhi= [i for i in data.values()] # print(sx_zhi[-1]) temp = Node("shiti",name=str(shuxing[-1]),property=str(sx_zhi[-1]))#,des=str([sx_zhi[-1]]) # g.create(temp) with open("关系.txt",'r',encoding='utf-8')as f: da = f.readlines() for i in da: k = i.strip("\n").split(" ") print(k[0]) rel = Relationship(g.find_one(label="shiti",property_key='name',property_value=str(k[0])),str(k[1]) ,g.find_one(label="shiti",property_key='name',property_value=str(k[2])))原文地址:https://cloud.tencent.com/developer/article/1370907