将neo4j的一个节点上的关系移动到另一个节点上
将neo4j中一个节点的全部关系移动到另一个节点上面,采用先建立新关系,之后删除原先的关系的方式
def move_relations(source_node_id,target_node_id,graph=None):
"""
将 source_node_id 上所有的关系移动到 target_node_id 上
"""
if source_node_id is None or target_node_id is None:
return
if graph is None:
graph = get_graph()
r_ids = []
match = "match (x)-[r]-(n) where id(x)=%s return r" % (source_node_id)
data = graph.run(match).data()
for d in data:
for tk,tv in d.items():
relations = tv.relationships
for r in relations:
if r.identity in r_ids:
continue
r_ids.append(r.identity) from_id = 0
to_id = 0
if r.start_node.identity == source_node_id:
from_id = target_node_id
to_id = r.end_node.identity
else:
from_id = r.start_node.identity
to_id = target_node_id
labels = ""
if r.types() is not None:
for la in r.types():
labels+=":" + la
fields = []
fields_str = ""
for k,v in r.items():
fields.append("%s:'%s'" % (k,v))
if len(fields) > 0:
fields_str = ",".join(fields)
fields_str = "{%s}" % fields_str
match = "match (x),(y) where id(x)=%s and id(y)=%s create (x)-[r%s%s]->(y) return id(r)" % (from_id,to_id,labels,fields_str)
result=graph.run(match).data()
if result is None or len(result)==0:
return False
match = "match ()-[r]-() where id(r)=%s delete r" % (r.identity)
graph.run(match)
return True return
将neo4j的一个节点上的关系移动到另一个节点上的更多相关文章
- redis集群在线迁移第二篇(redis迁移后调整主从关系,停掉14机器上的所有从节点)-实战二
变更需求为: 1.调整主从关系,所有节点都调整到10.129.51.30机器上 2.停掉10.128.51.14上的所有redis,14机器关机 14机器下线迁移至新机房,这段时间将不能提供服务. 当 ...
- 用Docker在一台笔记本电脑上搭建一个具有10个节点7种角色的Hadoop集群(上)-快速上手Docker
如果想在一台电脑上搭建一个多节点的Hadoop集群,传统的方式是使用多个虚拟机.但这种方式占用的资源比较多,一台笔记本能同时运行的虚拟机的数量是很有限的.这个时候我们可以使用Docker.Docker ...
- 基于neo4j图数据库,实现人口关系大图的基本思路及实现方案。
近期由于工作需要,需要做一个人口关系大图的存储及检索方案,我们主要的数据对象有:人口(年龄,身份证号码,性别..) :学校信息(学校地址,学校名称,学校级别,学校下边的年级班级..):就职信息(公司名 ...
- JS学习之DOM节点的关系属性封装、克隆节点、Dom中Style常用的一些属性等小结
JS DOM节点: 在JS DOM中节点的关系被定义为节点的属性: 通常有以下几种节点之间的关系: (这里的关系是所有浏览器都支持的) parentNode 父节点 childNodes ...
- html5中的dom中的各种节点的层次关系是怎样的
html5中的dom中的各种节点的层次关系是怎样的 一.总结 一句话总结:Node节点是所有节点的基类,所以都继承它的方法 1.dom提供在js中动态修改html标签的作用 比如增加修改标签等,并且是 ...
- 004/HyperLedger-Fabric(节点与channel关系)
HyperLedger:超级账本项目 一.Fabric中的节点 1.节点术语 [1].Orderers: 提供共识服务的网络节点,例如,使用Kafka或PBFT [2].Peers: 维护账本 ...
- mybatis源码-Mapper解析之SQL 语句节点解析(一条语句对应一个MappedStatement)
目录 一起学 mybatis 0 <sql> 节点解析 1 解析流程 2 节点解析 2.1 解析流程 2.2 <include> 节点的解析 2.3 Node.ELEMENT_ ...
- [原][osg][osgEarth]osg::Matrix 父子节点的变化关系
//osg::Matrix offsetmatrix 计算出子节点在父节点下的绝对坐标 //osg::Matrix offposition 用来计算当前节点相对父节点的位置 osg::Matrix o ...
- Django项目:CRM(客户关系管理系统)--71--61PerfectCRM实现CRM学生上传作业
# student_urls.py # ————————60PerfectCRM实现CRM学生上课记录———————— from django.conf.urls import url from bp ...
随机推荐
- 路由器配置——基于链路的OSPF的MD5口令认证
一.实验目的:掌握基于链路的OSPFMD5口令认证 二.拓扑图: 三.具体步骤配置: (1)R1路由器的配置 Router>enable Router#configure terminal En ...
- VS2010调试时,对于一些语句不能单步运行也不能对变量添加监视的问题
在以mfc建立的工程中,需要建立一个链表来保存一些数据.但是在创建结构体,以及对其赋值的过程中,发现对结构体变量不能观察,添加到监视器中的变量也出现变量名不存在的错误. 首先,在文件的开始定义一个结构 ...
- [转]vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess
三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,Cr ...
- python输出的高亮显示
一.语法 1.书写格式 开头部分: \033[显示方式;前景色;背景色m 结尾部分: \033[0m 例如:\033[31;1m测试的文字部分\033[0m 注意: 开头部分的三个参数:显示方 ...
- .netcore signalR 实时消息推送
服务器端引入包 Install-Package Microsoft.AspNetCore.SignalR客户端引入包 npm install @aspnet/signalr <template ...
- D. Restore Permutation(权值线段树)
D. Restore Permutation time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- Python学习日记(八)—— 模块一(sys、os、hashlib、random、time、RE)
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- UVALive 4976 Defense Lines ——(LIS变形)
题意:给出序列,能够从这序列中删去连续的一段,问剩下的序列中的最长的严格上升子串的长度是多少. 这题颇有点LIS的味道.因为具体做法就是维护一个单调的集合,然后xjbg一下即可.具体的见代码吧: #i ...
- easyui复选框实现单选框
$(':checkbox[name=primary_key_flag]').each(function(){ $(this).click(function(){ if(this.checked){ $ ...
- Android Popwindow使用总结
Android Popwindow使用总结 转 https://www.jianshu.com/p/3812ff5ef272 1.基本使用方法 View view = getLayoutInflate ...