常用函数

功能

描述

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

评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

图数据库neo4j介绍(4)——常用语法