前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图数据库neo4j介绍(5)——常用函数常用函数shortestPath 查询最短路径正则collect数据导入

图数据库neo4j介绍(5)——常用函数常用函数shortestPath 查询最短路径正则collect数据导入

作者头像
DC童生
发布2018-12-11 16:49:32
5.4K0
发布2018-12-11 16:49:32
举报
文章被收录于专栏:机器学习原理机器学习原理

常用函数

功能

描述

UPPER

它用于将所有字母更改为大写字母。

LOWER

它用于将所有字母改为小写字母。

SUBSTRING

它用于获取给定String的子字符串。

REPLACE

它用于替换一个字符串的子字符串。

聚集函数

描述

COUNT

它返回由MATCH命令返回的行数。

MAX

它从MATCH命令返回的一组行返回最大值。

MIN

它返回由MATCH命令返回的一组行的最小值。

SUM

它返回由MATCH命令返回的所有行的求和值。

AVG

它返回由MATCH命令返回的所有行的平均值。

代码语言:javascript
复制
取字符串
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层关系

代码语言:javascript
复制
match p = shortestpath((:hero{name:"孙尚香"})-[*..3]-(:hero{name:"武则天"})) return p
match p = allshortpath((:hero{name:"孙尚香"})-[*..3]-(:hero{name:"武则天"})) return p

image.png

正则

代码语言:javascript
复制
(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个表的全部内容:哪些公司卖哪些货?

代码语言:javascript
复制
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

代码语言:javascript
复制
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目录中

代码语言:javascript
复制
// 将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接口导入文件

代码语言:javascript
复制
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])))
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.11.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常用函数
  • shortestPath 查询最短路径
  • 正则
  • collect
  • 数据导入
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档