【发布时间】:2016-10-24 02:58:48
【问题描述】:
下面给出的是密码查询,它为参数化列表中提到的每种关系类型重复,每种关系类型都有特定的属性和值要添加到连接节点。根据neo4j,不可能参数化关系类型。无论如何使用密码来解决这个问题?还是用 apoc?
Merge(n_device: Device{identifier: {deviceId}}) ON CREATE SET n_device.created=timestamp()
WITH n_device
OPTIONAL MATCH (n_device)-[r_prev:{deviceRel}{active:true}]->()
WITH n_device, r_prev
Merge(n_deviceOs: Device{{deviceRelProp}: {deviceRelPropVal}}) ON CREATE SET n_deviceOs :DeviceOs, n_deviceOs.created=timestamp(), n_deviceOs.newNode=true
WITH n_device, n_deviceOs, r_prev
Merge (n_device)-[r_cur:{deviceRel}]->(n_deviceOs) ON CREATE SET r_cur.active=true, r_cur.created=timestamp()
WITH n_deviceOs, r_prev
Match(n_deviceOs) where n_deviceOs.newNode=true set r_prev.active = false, r_prev.modified=timestamp()
REMOVE n_deviceOs.newNode
"params": {
"deviceId": "1234",
"deviceRel": ["HAS_DEVICE_OS", "HAS_DEVICE_OSINFO", "HAS_DEVICE_MODEL", "HAS_DEVICE_APPVERSION"],
"deviceRelProp": ["os", "osinfo", "model", "version"],
"deviceRelPropVal": ["android", "kitkat", "samsung", "1.64.2"]
}
【问题讨论】:
标签: neo4j