2016-04-11 2 views
1

Я использую 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 

Любая идея, почему при совмещении удаления и слияния казни я не получил каких-либо изменений (если график пуст)?

Спасибо.

ответ

0

Заменить первый match с optional match

Например, если у вас нет клиентских узлов в базе данных, но есть человек узлы запрос

Match (p:Client) with p Match (r:Person) return * 

не получит ничего, но запрос

Optional Match (p:Client) with p Match (r:Person) return * 

даст вам людей. Я думаю, оптимизатор neo4j прекращает выполнение запроса после того, как он не получит никаких результатов, и с optional match он получает значение null и продолжает выполнение.

+0

Дополнительный матч сделал трюк. но я не уверен, что понимаю почему. почему, когда граф пуст, дополнительное совпадение позволит мне выполнить второй запрос? – rayman

+0

Боюсь, что мои знания недостаточно глубоки, чтобы ответить на этот вопрос. Я узнал об этом на практике и предположил, что если какой-либо запрос ничего не возвращает (но не null, null - это что-то), он не продолжает выполняться, но я действительно никогда не искал эту иллюстрацию в документации. – Evgen

Смежные вопросы