目前我正在使用 GraphRepository 中的保存方法,我对用户ID也有约束,它是唯一。用户有用户列表 - 朋友。 我的流程:
但如果用户在场,我只需要更新他并更新他的朋友。 我在DAO方法中使用自定义查询
try! realm.write { // Open the Realm write transaction outside of the loop
for index in 0..<numberOfTravelTimes-2 {
print("index:\(index) count:\(travelTimes.count)")
let travelTime = travelTimes[index]
travelTime.travelPhaseIsClosed = true
realm.add(travelTime, update: true)
}
}
答案 0 :(得分:0)
您可能希望使用类似于此的Cypher查询:
MERGE (u:User {id:{user}.id})
SET u.firstName = {user}.firstName, u.lastName = {user}.lastName, u.imgUrl = {user}.imgUrl
WITH u
UNWIND {friends} AS friend
MERGE (f:User {id:{friend}.id})
SET f.firstName = {friend}.firstName, f.lastName = {friend}.lastName, f.imgUrl = {friend}.imgUrl
MERGE (u)-[:FRIEND_OF]->(f);
无需使用ON CREATE
或ON MATCH
,因为您始终希望以同样的方式执行相同操作。此外,无需明确分配id
属性,因为MERGE
将保证节点具有所需的id
值。
我认为friends
集合包含与user
地图具有相同键的地图。