0
以下給出的是密碼查詢,它針對每個關係類型重複進行,如參數化列表中所述,並且每個關係類型都具有要添加到連接節點的特定屬性和值。根據neo4j,不可能參數化關係類型。無論如何要使用密碼來解決這個問題嗎?或與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"]
}
我看到它的創造關係。如果您看到上述查詢,我還需要一個用於匹配節點關係節點。我沒有看到其中一個。 – Kartlee
MATCH(n_device) - [r_prev {active:true}] - >()WHERE TYPE(r_prev)= {deviceRel}'(或第二個匹配的相同過濾器)可以在本地Cypher中完成。 –
謝謝,我跟着你提到的方法。是否可以發送一個列表併爲列表中的每個值查詢參數化?如果neo4j不支持,是否可以做apoc? – Kartlee