Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在单个循环查询中添加新节点和关系

在单个循环查询中添加新节点和关系
EN

Stack Overflow用户
提问于 2014-09-30 11:54:08
回答 2查看 997关注 0票数 0

我使用的是neo4j 2.1.4社区版。我创建了一些节点和关系,如下所示。

现在我想完成以下任务:我有一个节点(紫色节点),它具有ID、Name、Created_Date和End_Date等属性。它的关系属性为flag:ACTIVE 1)我想在橙色节点下面和黄色节点上面添加一个节点,即,新创建的节点将类似于紫色节点的平行节点,橙色和黄色节点之间具有HAS关系,关系属性为Status:ACTIVE。3)现有的紫色节点关系属性Status:'ACTIVE'应该更改为INACTIVE,并且紫色节点的END_Date应该成为新创建的节点的Created_Date

这些都是我想在一个查询中获得的东西。

我写了下面的查询来实现这一点。我可以用created_date创建一个新节点,但不能删除关系。我不知道哪里出了问题。

查询:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MERGE  (og:OperatingGroup {OperatingGroup_ID:'NOP',OpeartingGroup_Name:'Operating'}) 
ON CREATE SET og.GOG_Start_Date= timestamp()
WITH og
MATCH (h:Hierarchy {Hierarchy_ID:181,Hierarchy_Name:'Global Property Hierarchy'})
Create (h)-[:HAS]->(og)
return h,og;

在上面的查询中没有实现的事情是:1)创建具有属性的关系2)更新旧节点(紫色节点)中的关系3)将旧节点的END_Date属性更新为INACTIVE

那么,如何在一个密码查询中访问所有这些内容呢?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-09-30 12:16:02

您应该尝试将您的单词转换为查询,或者首先将其绘制在纸上或白板上。

首先,你想“匹配”一个节点,那么为什么要从"MERGE“开始呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH (purple:Purple {id:123})
WITH purple

其次,您可能想要获取连接到Purple Node的橙色节点和黄色节点,因为您的新节点应该类似于平行的节点,所以您还应该为关系指定一个别名,因为您希望稍后修改关系属性:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH (orange:Orange)-[purpleToOrange:HAS]-(purple)-[purpleToYellow:HAS]-(yellow:Yellow)
WITH purple, orange, yellow, purpleToOrange, purpleToYellow

然后,您需要创建新节点并将黄色和橙色节点附加到该节点,相关节点已经绑定到查询,因此您可以使用"MERGE“并避免重复的黄色和橙色节点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MERGE (orange)-[:HAS]->(newPurple:Purple {id: 789654, created_at:20140930140925})<-[:HAS]-(yellow)

最后,您希望将关系属性status和end_date从原来的紫色节点更新为??(在你的描述中没有指定,所以我假设在紫色和橙色之间)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SET purpleToOrange.status = "INACTIVE",
SET purpleToOrange.endDate = 20140930140925

然后,您可能想要返回新创建的紫色节点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RETURN newPurple

现在,完整的查询如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH (purple:Purple {id:123})
WITH n
MATCH (orange:Orange)-[purpleToOrange:HAS]-(purple)-[purpleToYellow:HAS]-(yellow:Yellow)
WITH purple, orange, yellow, purpleToOrange, purpleToYellow
MERGE (orange)-[:HAS]->(newPurple:Purple {id: 789654, created_at:20140930140925})<-[:HAS]-(yellow)
SET purpleToOrange.status = "INACTIVE",
SET purpleToOrange.endDate = 20140930140925
RETURN newPurple
票数 0
EN

Stack Overflow用户

发布于 2014-09-30 12:22:43

您想要用一个查询做很多事情,但我认为这样就可以了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH (h:Hierarchy {Hierarchy_ID:181,Hierarchy_Name:'Global Property Hierarchy'})
MERGE (h)-[:HAS{status;'ACTIVE'}]->(og:OperatingGroup {OperatingGroup_ID:'NOP',OpeartingGroup_Name:'Operating'})
ON CREATE SET og.GOG_Start_Date = timestamp()
WITH h, og
MATCH (h)-[has:HAS{status:'ACTIVE'}]->(other:OperatingGroup)
WHERE other <> og
SET has.status='INACTIVE'
SET other.GOG_End_Date = og.GOG_Start_Date
RETURN h, og

匹配从中踢出所有内容的层次结构节点。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH (h:Hierarchy {Hierarchy_ID:181,Hierarchy_Name:'Global Property Hierarchy'})

将此与活动状态关系合并到ID为'NOP‘的OperatingGroup。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MERGE (h)-[:HAS{status;'ACTIVE'}]->(og:OperatingGroup {OperatingGroup_ID:'NOP',OpeartingGroup_Name:'Operating'})

如果组是刚创建的,则设置开始日期。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ON CREATE SET og.GOG_Start_Date = timestamp()

现在匹配任何其他已存在的OperatingGroups和它们的HAS关系。设置status属性和endDate (在OperatingGroup节点上,以匹配GOG_Start_Date?)如你所愿。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
WITH h, og
MATCH (h)-[has:HAS]->(other:OperatingGroup)
WHERE other <> og
SET has.status='INACTIVE'
SET other.GOG_End_Date = og.GOG_Start_Date
RETURN h, og

编辑- OperatingCompany

我从Christophe的回答中看到,他保留了OperatingGroup到OperatingCOmpany的关系,虽然没有被请求,但确实很有意义(我们是在颠倒地操作您的图形吗?)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH (h:Hierarchy {Hierarchy_ID:181,Hierarchy_Name:'Global Property Hierarchy'})-[existingHas:HAS]->(existingOg:OperatingGroup)<-[belong:BELONGS]-(company:OperatingCompany)
MERGE (h)-[:HAS{status;'ACTIVE'}]->(og:OperatingGroup {OperatingGroup_ID:'NOP',OpeartingGroup_Name:'Operating'})<-[:BELONGS]-(company)
ON CREATE SET og.GOG_Start_Date = timestamp()
WITH h, og, existingHas, exitingOg
SET existingHas.status='INACTIVE'
SET existingOg.GOG_End_Date = og.GOG_Start_Date
RETURN h, og
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26120196

复制
相关文章
Golang计算两个经度和纬度之间的距离
Go语言计算两个经度和纬度之间的距离 package main import ( "fmt" "math" ) func main() { lat1 := 29.490295 lng1 := 106.486654 lat2 := 29.615467 lng2 := 106.581515 fmt.Println(EarthDistance(lat1, lng1, lat2, lng2)) } func EarthDistance(lat1, lng1, lat2, lng
大师级码师
2021/11/02
2.6K0
已知两点的经度和纬度,计算两点间的距离(php,javascript)
php代码:转载  http://www.cnblogs.com/caichenghui/p/5977431.html
lin_zone
2018/08/15
7830
【Java AWT 图形界面编程】经度 Longitude 、纬度 Latitude 计算 ( 经度、纬度概念 | 根据经纬度计算距离 )
经度 Longitude , 本初子午线 位置 为 0 度经线 , 相当于水平 x 轴 的坐标 , 经度的取值范围 -180 度 ~ +180 度 ;
韩曙亮
2023/03/25
7790
【Java AWT 图形界面编程】经度 Longitude 、纬度 Latitude 计算 ( 经度、纬度概念 | 根据经纬度计算距离 )
百度地图JavaScript API获取用户当前经纬度和详细地理位置,反之通过详细地理位置获取当前经纬度
  前端时间刚好使用了百度地图的js api定位获取用户当前经纬度并获取当前详细位置和通过当前用户详细地理位置换取用户当前经纬度坐标的功能,为了方便下次找起来方便一些自己在这里记录一下,希望也能够帮助到有需要的童鞋们!
追逐时光者
2019/08/28
7.2K0
根据位置、经纬度获取天气API
https://seniverse.yuque.com/books/share/ded1e167-e35c-4669-8306-cf65c6e01dc0/start
莫空9081
2021/06/02
6.9K0
通过IP地址获取当前地理位置的接口(包含纬经度)
直接访问:https://api.liguangchun.cn/api/v7/ip/ 就可以查询到了
李光春
2018/09/18
3.5K0
HTML5的Geolocation API
Geolocation API用于将用户当前地理位置信息共享给信任的站点,这涉及用户的隐私安全问题,所以当一个站点需要获取用户的当前地理位置,浏览器会提示用户是“允许” or “拒绝”。
meteoric
2018/11/15
1.5K0
JavaScript与jQuery获取元素的宽、高和位置
今天汇总整理了 JavaScript 和 jQuery 获取元素宽高和位置的方法,比较全面,方便自己和需要并搜到此文章的朋友们查看。
德顺
2019/11/13
3.1K0
第182天:HTML5——地理定位
HTML5 Geolocation API 用于获得用户的地理位置。 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。
半指温柔乐
2018/09/11
2K0
第182天:HTML5——地理定位
JavaScript 中获取光标位置
DOM中并没有直接获取光标位置的方法,那么我们只能间接来获取光标位置。DOM支持获取光标选中的范围,我们可以以此为切入点,来获取或定位光标的位置,当选取范围起始点和结束点一样时,就是光标插入的位置。
越陌度阡
2020/11/26
12.5K0
【Java 进阶篇】JavaScript BOM(浏览器对象模型)详解
BOM,即浏览器对象模型(Browser Object Model),是JavaScript与浏览器之间的接口,它允许JavaScript与浏览器进行交互,实现访问和控制浏览器窗口、文档和其他浏览器功能的功能。本文将详细介绍BOM的各个方面,包括窗口对象、定时器、历史记录、位置信息等,并提供示例代码来帮助您更好地理解和运用BOM。
繁依Fanyi
2023/10/19
6790
用Javascript获取页面元素的位置
制作网页的过程中,你有时候需要知道某个元素在网页上的确切位置。 下面的教程总结了Javascript在网页定位方面的相关知识。 一、网页的大小和浏览器窗口的大小 首先,要明确两个基本概念。 一张网页的全部面积,就是它的大小。通常情况下,网页的大小由内容和CSS样式表决定。 浏览器窗口的大小,则是指在浏览器窗口中看到的那部分网页面积,又叫做viewport(视口)。 很显然,如果网页的内容能够在浏览器窗口中全部显示(也就是不出现滚动条),那么网页的大小和浏览器窗口的大小是相等的。如果不能全部显示,则滚动浏览器
ruanyf
2018/04/12
3.3K0
小程序地图学习之获取位置 获取经纬度 获取地名 获取地址
我们在做小程序开发时,难免会遇到地图相关的开发,而小程序已经为我们提供的比较完善的地图组件。我们只需要调用相关的api就可以实现大致的功能。如:获取经纬度,获取位置,获取地址,获取地名。接下来就具体给大家讲解
编程小石头
2020/10/22
1.8K0
小程序地图学习之获取位置 获取经纬度 获取地名 获取地址
【Go 语言社区】HTML5 Geolocation(地理定位)-转
HTML5 Geolocation(地理定位)用于定位用户的位置。 ---- 定位用户的位置 HTML5 Geolocation API 用于获得用户的地理位置。 鉴于该特性可能侵犯用户的隐私,除非用
李海彬
2018/03/20
2.5K0
GIS数据漫谈(三)
赤道把地球分为了北半球和南半球,与赤道平行的线就是纬线。赤道是最大的纬圈,由此向北或向南,纬圈半径递减。赤道纬度为 0°,由赤道向两级各分为90°。
thingjs
2022/07/12
1.8K0
GIS数据漫谈(三)
第127天:移动端-获取触摸点的位置
$("#demoid").bind('touchstart',function(){ //代码处理});
半指温柔乐
2018/09/11
1.5K0
第127天:移动端-获取触摸点的位置
实践:了解Redis Geo范围查询,获取当前位置最近的经纬度点
近期有个获取车辆所处道路的需求,车辆行驶的范围在一个城市的市区内,针对一个城市的道路经纬度节点的数据量会比较大(就济南市而言,目前数据量在20万左右),数据的准确性以及检索效率是首要考虑的问题。
恒宇少年
2021/04/12
3.1K0
WebView处理网页位置请求
随着移动设备的激增,LBS(Location Based Service)已然成为趋势,其最关键的还是获取设备的位置信息。native代码获取位置信息轻轻松松可以搞定,实际上网页获取位置信息也不是那么困难。
技术小黑屋
2018/09/04
1.3K0
点击加载更多

相似问题

获取位置(纬度和经度)

20

获取位置的纬度和经度

10

获取位置的纬度和经度

14

无法获取用户位置的经度和纬度

11

无法映射纬度和经度位置

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文