Я пытаюсь сделать запрос Cypher, который делает 2 узла и добавляет отношения между ними.
Для добавления узла я проверяю, существует ли узел или нет,если он существует, я просто собираюсь установить свойство.
// Query 1 for creating or updating node 1
MERGE (Kunal:PERSON)
ON CREATE SET
Kunal.name = 'Kunal',
Kunal.type = 'Person',
Kunal.created = timestamp()
ON MATCH SET
Kunal.lastUpdated = timestamp()
RETURN Kunal
// Query 2 for creating or updating node 2
MERGE (Bangalore: LOC)
ON CREATE SET
Bangalore.name = 'Bangalore',
Bangalore.type = 'Location',
Bangalore.created = timestamp()
ON MATCH SET
Bangalore.lastUpdated = timestamp()
RETURN Bangalore
Аналогичным образом я проверяю, существует ли связь между созданными выше узлами, если не существует, тосоздайте его, обновив его свойства.
// Query 3 for creating relation or updating it.
MERGE (Kunal: PERSON { name: 'Kunal', type: 'Person' })
MERGE (Bangalore: LOC { name: 'Bangalore', type: 'Location' })
MERGE (Kunal)-[r:LIVES_IN]->(Bangalore)
ON CREATE SET
r.duration = 36
ON MATCH SET
r.duration = r.duration + 1
RETURN *
Проблема состоит в том, что это 3 отдельных запроса, которые будут иметь 3 обращения к базе данных, когда я буду запускать его через драйвер Python.Есть ли способ оптимизировать эти запросы в один запрос.