neo4j - Neo4j:为多种情况更新节点
问题描述
我正在设计一个查询,可以处理更新我的节点以应对多种情况。但是,我似乎无法实现一种特殊情况。
数据模型:
个人车主在线销售汽车的平台 用户可以购买汽车,并在购买时创建一个带有时间戳的日历节点作为属性(即 start_ts)。如果用户决定在以后出售汽车,则将另一个时间戳作为属性添加到日历节点(即 end_ts)。
案子:
我的问题是当用户卖掉了他的车,但是如果用户想买回他卖的车,一个新的节点(日历)就不会创建。
注意:对于我只想更新用户 da 的情况,我使用 MERGE 而不是 CREATE
询问:
UNWIND $userdata AS user
MATCH (u:User {ID:user.ID})
// Updating properties
SET u += user
WITH u, user
// Check if car is already assigned to another user
OPTIONAL MATCH (cr:Car)<-[:ON]-(cal:Calendar)<-[:BOUGHT]-(us:User)
WHERE NOT EXISTS(cal.end_ts) AND NOT us.ID = user.ID AND cr.ID IN $cars
SET cal.end_ts=datetime()
WITH u
// Check if car is removed
OPTIONAL MATCH (cr:Car)<-[:ON]-(cal:Calendar)<-[:BOUGHT]-(u)
WHERE NOT EXISTS(cal.end_ts) AND NOT cr.ID IN $cars
SET cal.end_ts=datetime()
WITH u
// Attach car to user
OPTIONAL MATCH (c:Car)
WHERE c.ID IN $cars
FOREACH (ignoreMe IN CASE WHEN c IS NULL THEN [] ELSE [1] END | MERGE (c)<-[:ON]-(cal:Calendar)<-[:BOUGHT]-(u)
ON CREATE SET cal.start_ts=datetime())
RETURN DISTINCT u AS data
我不知道如何解决这个问题。提前致谢
解决方案
推荐阅读
- sql - current month record should be display from table
- css - How to use one layout for multiple pages with css for each page in DNN?
- java - 从java类向MainActivity显示解析的数据
- node.js - 如何在不使用 npm install 的情况下安装/下载包
或纱线安装 - c# - 在 ASP.NET Core 视图中将列数据显示为一行
- android - 无法在 android TV Preferences 片段中找到提供者
- orm - How to print time taken for SQL query to execute in loopback console?
- java - JDialog 正在冻结
- python - 你如何从连续的行中检索文本并在 python 中制作制表符分隔的列?
- cryptography - 安全问题是共享密钥的私钥泄露