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

常用函数

功能

描述

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])))

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏顶级程序员

MySQL 全文索引应用简明教程

本文从以下几个方面介绍下MySQL全文索引的基础知识: MySQL全文索引的几个注意事项 全文索引的语法 几种搜索类型的简介 几种搜索类型的实例 全文索引的几个...

38510
来自专栏用户画像

MySQL数据库中的5种数据类型简介

MySQL数据库中的5种数据类型是:字符型,文本型,数值型,逻辑型与日期型,以下就是文章的详细内容介绍,希望在你今后的学习中会有所帮助。

832
来自专栏GIS讲堂

OpenLayers3基础教程——OL3 介绍interaction

本节主要讲述OL3的交互操作interaction,重点介绍draw,select以及modify。

3034
来自专栏Java成神之路

HQL语句大全

Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它...

1465
来自专栏数据结构与算法

BZOJ 3932: [CQOI2015]任务查询系统(主席树)

1420
来自专栏小白鼠

Mybatis

从xml配置文件中读取配置,然后通过SqlSessionFactoryBuilder构建SqlSessionFactory实例(建造者模式)。SqlSessio...

2693
来自专栏YG小书屋

ES中文分词器之精确短语匹配(自定义分词器)

6862
来自专栏鸿的学习笔记

python源码阅读笔记之字典对象

913
来自专栏Python

Django——model基础

ORM 映射关系:     表名 <-------> 类名 字段 <-------> 属性     表记录 <------->类实例对象...

18310
来自专栏MasiMaro 的技术博文

OLEDB 静态绑定和数据转化接口

OLEDB 提供了静态绑定和动态绑定两种方式,相比动态绑定来说,静态绑定在使用上更加简单,而在灵活性上不如动态绑定,动态绑定在前面已经介绍过了,本文主要介绍OL...

1081

扫码关注云+社区

领取腾讯云代金券