Neo4J自学

一:删除所有节点

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

查询指定节点

Match (n: Intersection) where n.name =6011018263 return n

创建节点与关系

CREATE (I_1540027738:Intersection {name:'1540027738'})-[Road:R_140582515]->(I_5257715003:Intersection {name:'5257715003'})
CREATE
(I_1540027738: Intersection{name: 1540027738})
CREATE
(I_5257715003: Intersection{name: 5257715003})
CREATE
(I_5257346282: Intersection{name: 5257346282})
CREATE
(I_5257714959: Intersection{name: 5257714959})

MATCH (I_1540027738: Intersection{name: 1540027738}),(I_5257715003: Intersection{name: 5257715003})
CREATE
	(I_1540027738)-[Road:R_140582515]->(I_5257715003)

MATCH (I_5257715003: Intersection{name: 5257715003}),(I_5257346282: Intersection{name: 5257346282})
CREATE
	(I_5257715003)-[Road:R_140582515]->(I_5257346282)

MATCH (I_5257346282: Intersection{name: 5257346282}),(I_5257714959: Intersection{name: 5257714959})
CREATE
	(I_5257346282)-[Road:R_140582515]->(I_5257714959)

用Python操作Neo4J

from py2neo import Graph
from xml.dom.minidom import parse
import xml.dom.minidom
graph = Graph("bolt://127.0.0.1:7687", username="neo4j", password="1026")
n=graph.nodes.match("Intersection")
for i in n:
    print(i)
graph.run('MATCH (I_5257346282: Intersection{name: 5257346282}),(I_5257714959: Intersection{name: 5257714959}) CREATE(I_5257346282)-[Road:R_140582515]->(I_5257714959)')

根据openstreetmap数据在Neo4J中插入路线

#说明 haikou_map.osm数据来自于openstreetmap
from pygeohash import encode, decode
import plotly
import numpy as np
import pandas as pd
import math
from matplotlib.path import Path
import numpy as np
import plotly.offline as of
import plotly.graph_objs as go
import chart_studio.plotly as py
import numpy as np
import pandas as pd
import folium
import webbrowser
from folium.plugins import HeatMap
import datetime
import time
import pymysql.cursors
import decimal
import geohash
from py2neo import Graph
from xml.dom.minidom import parse
import xml.dom.minidom
graph = Graph("bolt://127.0.0.1:7687", username="neo4j", password="1026")
#dom解析xml
DOMTree = xml.dom.minidom.parse("haikou_map.osm")
#返回文档的根节点
root1 = DOMTree.documentElement
#观察新闻发现,内容都在Event元素下
ContentNodes = root1.getElementsByTagName("way")
#定义一个字符串,保存解析出的数据
content = ""
#遍历所有的Event
k=1
for i in range(len(ContentNodes)):
    #获取第i个Event下的子节点
    wayNodes = ContentNodes[i]._attrs['id']._value #这条路的ID
    # print(wayNodes)
    waynd=ContentNodes[i].getElementsByTagName("nd")
    waytag = ContentNodes[i].getElementsByTagName("tag") #这条路的名称
    wayJiedian=[]
    for j in range(len(waynd)):
        wayJiedia=waynd[j]._attrs['ref']._value #存放这条路的节点
        wayJiedian.append(wayJiedia)#存放这条路的节点
    # print(wayJiedian)
    s=0
    while s < len(wayJiedian): #第一步创建节点
        qucf='Match (n: Intersection) where n.name ='+str(wayJiedian[s])+' return n'#如果已经存在就不插入了
        tmp_df = pd.DataFrame(graph.run(qucf)).empty #判断是否为空
        if tmp_df==True:
            graph.run('CREATE (I_' + str(wayJiedian[s]) + ': Intersection' + '{name: ' + str(wayJiedian[s]) + '})')
        else:
            print('***************')
            print('***'+str(wayJiedian[s])+'是重复****')
            print('***************')
        s+=1
    n=0
    while n < (len(wayJiedian)-1):   #第二步创建节点间的关系
        graph.run('MATCH(I_' + str(wayJiedian[n]) + ': Intersection' + '{name: ' + str(wayJiedian[n]) + '}),(I_' + str(
            wayJiedian[n + 1]) + ': Intersection' + '{name:' + str(wayJiedian[n + 1]) + '}) CREATE' + '(I_' + str(
            wayJiedian[n]) + ') - [Road: R_' + str(wayNodes) + ']->(I_' + str(wayJiedian[n + 1]) + ')')
        n+=1
    print('第'+str(k)+'个路段已创建')
    k+=1
    # for k in range(len(waytag)):
    #      waytagNodes=waytag[k]._attrs['k']._value #'highway'
    #      if waytagNodes== "name":
    #         waytagNodes1 = waytag[k]._attrs['v']._value #'茉莉路'
    #         print(waytagNodes1)
    # print(wayJiedian)



# Match (n: Intersection) where n ='I_5267204253' return n
# Match (n: Intersection) where n.name =5267204224 return n
## 联合查询

```sql
MATCH p=()-[r:R_215530842]->() RETURN p
UNION ALL
MATCH p=()-[r:R_215562722]->() RETURN p
UNION ALL
MATCH p=()-[r:R_215560399]->() RETURN p
UNION ALL
MATCH p=()-[r:R_140582515]->() RETURN p
UNION ALL
MATCH p=()-[r:R_215569614]->() RETURN p
UNION ALL
MATCH p=()-[r:R_215571357]->() RETURN p
UNION ALL
MATCH p=()-[r:R_215566172]->() RETURN p
UNION ALL
MATCH p=()-[r:R_211621149]->() RETURN p
neo4j api neo4j学习资料 neo4j教程 │ neo4j官方API(官方各种API的文档整理).7z │ neo4j数据迁移--初探(一).htm │ neo4j笔记.docx │ neo4j错误码状态码.html │ └─01.neo4j学习博客汇总 │ index.html └─neo4j_cypher │ Cypher(神奇的WITH).html │ cypher_index.html │ Cypher查询语言--Neo4j 综合(四) - divenswu - 博客园.html │ Cypher查询语言--Neo4j中的SQL - 爱上包子 - 博客园.html │ DETACH DELETE n 删除node n ,并删除所有与n相关的关系.html │ Neo4j - NOT IN query.html │ Neo4j CQL - (11)- REMOVE删除 DELETE.html │ Neo4j Cypher 复杂查询详解在之With - 何源浩的博客 - CSDN博客.html │ neo4j 中使用sparql查询.html │ Neo4j 中文社区,致力于 Neo4j 的技术研究。.html │ Neo4j 使用cypher语言进行查询 - MHL - 博客园.html │ Neo4j 第一篇:在Windows环境中安装Neo4j - 悦光阴 - 博客园.html │ Neo4j 第三篇:Cypher查询入门 - 悦光阴 - 博客园.html │ Neo4j 第二篇:图形数据库 - 悦光阴 - 博客园.html │ Neo4j 第五篇:批量更新数据 - 悦光阴 - 博客园.html │ Neo4j 第四篇:使用C更新和查询Neo4j - 悦光阴 - 博客园.html │ Neo4J(Cypher语句)初识.html │ Neo4J(Cypher语句)学习 - 赵晓雷的专栏 - CSDN博客.html │ Neo4j_事务&深度遍历.html │ neo4j中的分组查询.html │ Neo4j之Cypher学习总结.html │ NEO4J亿级数据导入导出以及数据更新 - 耶和华靠近伤心的人,拯救灵性痛悔的人 - CS.html │ Neo4j入门点滴(一):Cypher.html │ Neo4j入门点滴(三):用Cypher完善图.html │ Neo4j入门点滴(二):模式与模式匹配.html │ Neo4j入门点滴(五):Windows Shell for Cypher.html │ Neo4j入门点滴(四):Cypher查询优化.html │ Neo4J几种数据导入方式的效率对比 - 何源浩的博客 - CSDN博客.html │ Neo4j模糊查询及分页查询 - c1052981766的专栏 - CSDN博客.html │ neo4j笔记 - Neo4j 中文社区.html │ Neo4j语句 - zhuweiba_321的博客 - CSDN博客.html │ Neo4j语句 - 阿里云.html │ 【程裕强的专栏】大数据学习笔记(1.01^365=37.78,0.99^365=0.025.html │ 五岳之巅-Neo4j入门点滴-博文目录.html │ 关于Neo4j和Cypher批量更新和批量插入优化的5个建议 - 逆水行舟 - CSDN博.html │ 图数据库-Neo4j介绍与Cypher入门.html │ 图数据库之Cypher语言 - 活的洒脱怪我咯的专栏 - CSDN博客.html │ 图数据库之neo4j-jdbc的使用 - 活的洒脱怪我咯的专栏 - CSDN博客.html │ 数据分页处理系列之三:Neo4j图数据分页处理.html │ 暖暖动听.html │ 飘涯 - 简书.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值