0
아래에 매개 변수화 된 목록에서 언급 한 각 관계 유형에 대해 반복되는 사이퍼 쿼리가 있으며 각 관계 유형에는 연결 노드에 추가 할 특정 속성과 값이 있습니다. neo4j에 따르면 관계 유형을 매개 변수화할 수 없습니다. Cypher를 사용하여이 문제를 해결할 수 있습니까? 또는 apoc으로?매개 변수화 된 neo4j 사이퍼 쿼리 실행
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"]
}
나는 관계를 창조하는 것을 본다. 위의 쿼리를 볼 경우 node-relationship-node를 일치시키기위한 쿼리도 필요합니다. 나는 그것을 위해 apoc에 하나를 볼 수 없습니다. – Kartlee
'일치 (n_device) - [r_prev {active : true}] ->() WHERE TYPE (r_prev) = {deviceRel}'(또는 두 번째 일치시 동일한 필터)는 기본 Cypher에서이를 수행 할 수 있습니다. –
감사합니다. 언급 한대로 접근했습니다. 목록을 보내고 목록의 각 값에 대해 쿼리를 매개 변수화 할 수 있습니까? neo4j가 쉽게 지원하지 않으면 apoc을 수행 할 수 있습니까? – Kartlee