Я использую cypher. Я пытаюсь удалить все исходящие отношения, прежде чем создавать новые в одном запросе. У меня странная ситуация, если отношения/узлы уже существуют, она работает так, как ожидалось. если они никогда не были созданы, прежде чем я получаю:Как удалить и объединить исходящие отношения по одному и тому же запросу
(no changes, no rows)
Это мой запрос:
match (user{userId:'a'})-[r:nearby_wifi]->() delete r
MERGE (p1:BT{userId:'a'}) WITH p1, [{bssid:"0a:18:d6:c1:3d:fd",level:"-51",timestamp:"1973-08-27 02:26:35.423",venueName:""},{bssid:"04:18:d6:c2:3e:2a",level:"-55",timestamp:"1973-08-27 02:26:35.425",venueName:""},{bssid:"0e:18:d6:c1:3d:fd",level:"-53",timestamp:"1973-08-25 11:06:07.392",venueName:""}] AS wifis
UNWIND wifis AS wifi
MERGE (p2:WIFI{bssid: wifi.bssid})
MERGE (p1)-[r1:nearby_wifi]->(p2)
SET r1.dist=wifi.dist
SET p1.lastTimeActive=1460378030215
SET p2.level=wifi.level
SET p2.timestamp=wifi.timestamp
SET p2.venueName=wifi.venueName
Любая идея, почему при совмещении удаления и слияния казни я не получил каких-либо изменений (если график пуст)?
Спасибо.
Дополнительный матч сделал трюк. но я не уверен, что понимаю почему. почему, когда граф пуст, дополнительное совпадение позволит мне выполнить второй запрос? – rayman
Боюсь, что мои знания недостаточно глубоки, чтобы ответить на этот вопрос. Я узнал об этом на практике и предположил, что если какой-либо запрос ничего не возвращает (но не null, null - это что-то), он не продолжает выполняться, но я действительно никогда не искал эту иллюстрацию в документации. – Evgen