У меня проблема с моим запросом, когда переменные, определенные внутри предложения FOREACH, недоступны для последующего MERGE.В приведенном ниже фрагменте я проверяю наличие значения для каждого поля перед созданием узлов.В некоторых случаях эти поля могут отсутствовать, поэтому я не хочу создавать для них узлы.Затем в последнем FOREACH, предполагая, что ссылка на эти узлы хранится в переменных, я пытаюсь создать их отношения.
FOREACH(ignoreMe IN CASE WHEN "${record:value('/11')}" <> "" THEN [1] ELSE [] END |
MERGE (company:Company{name:"${record:value('/11')}"}))
FOREACH(ignoreMe IN CASE WHEN "${record:value('/1')}" <> "" THEN [1] ELSE [] END |
MERGE (cloudSuite:CloudSuite{name:"${record:value('/1')}"}))
FOREACH(ignoreMe IN CASE WHEN "${record:value('/18')}" <> "" THEN [1] ELSE [] END |
MERGE (application:Application{name:"${record:value('/18')}"}))
FOREACH(ignoreMe IN CASE WHEN "${record:value('/8')}" <> "" THEN [1] ELSE [] END |
MERGE (applicationInstance:ApplicationInstance{applicationId:"${record:value('/8')}"}))
FOREACH(ignoreMe IN CASE WHEN "${record:value('/9')}" <> "" THEN [1] ELSE [] END |
MERGE (screen:Screen{name:"${record:value('/9')}"}))
FOREACH(ignoreMe IN CASE WHEN "${record:value('/19')}" <> "" THEN [1] ELSE [] END |
MERGE (screenInstance:ScreenInstance{screenId:"${record:value('/19')}"}))
FOREACH(ignoreMe IN CASE WHEN ("${record:value('/0')}" IN ["Accessed"])THEN [1] ELSE [] END |
MERGE (screenInstance)-[:INSTANCE_OF]->(screen)
MERGE (screenInstance)-[:VIEWED_ON]->(applicationInstance)
MERGE (application)-[:IMPLEMENTS]->(screen)
MERGE (session)-[:ACCESSES]->(screenInstance))
Однако на самом деле происходит то, что, когда я визуализирую свой график, я вижу действительные узлы, определенные как бесхозные узлы, и отношения, созданные между некоторыми "фантомными" узлами.Поэтому мой вопрос заключается в том, можно ли мне передать ссылку на действительные узлы в MERGE, который создает отношения.