У меня есть запрос, который находит кратчайший путь между 2 узлами.Эти узлы помечены как устройства, но они также подключены к узлам приложений.Итак, у меня есть 2 app_ids, и я хотел бы по этим идентификаторам найти все соединения между двумя устройствами, связанные с этими app_ids, а также информацию обо всех задействованных устройствах в этих соединениях.Итак, у меня был этот запрос:
WITH ["000001", "000002"] as IDS
UNWIND IDS as app_ids
MATCH (d:Device)-[:DEV_APP]->(a:Apps {app_id: app_ids})
WITH COLLECT(d) as device, COLLECT(distinct a) as app
WITH device[1] as first, device[7] as second, app
WITH first.device_id AS id1, second.device_id as id2, application
MATCH path=allShortestPaths((d1:Device {device_id:id1})-[:DEV_COL1|DEV_COL2|:DEV_COL3*..5]->(d2:Device {device_id:id2}))
RETURN path, application
Этот запрос возвращает все пути между узлами, однако мне также нужны данные обо всех подключенных приложениях к уязвимым устройствам.В то время как в результате я получаю только данные всех узлов устройств плюс 2 данных узлов приложений.Я понимаю, что это происходит потому, что я фильтрую узлы Apps в первом запросе Match.Поэтому я попытался сделать что-то вроде этого, чтобы найти все данные приложений, связанные с затронутыми устройствами, в запросе:
WITH ["000001", "000002"] as IDS
UNWIND IDS as app_ids
MATCH (d:Device)-[:DEV_APP]->(a:Apps {app_id: app_ids})
WITH COLLECT(d) as device, COLLECT(distinct a) as app, COLLECT(distinct d.device_id) as device_ids
MATCH (d_all:Device {device_id: device_ids})-[:DEV_APP]->(a_all:Apps)
WITH device[1] as first, device[7] as second, app, COLLECT(a_all) as apps
WITH first.device_id AS id1, second.device_id as id2, application, apps
MATCH path=allShortestPaths((d1:Device {device_id:id1})-[:DEV_COL1|DEV_COL2|:DEV_COL3*..5]->(d2:Device {device_id:id2}))
RETURN path, application, apps
Проблема в том, что в результате я не получаю никаких записей.Хотя я проверил, что список узлов device_ids не пуст.И когда я запускаю части этого запроса отдельно, результаты отображаются нормально.В чем может быть ошибка в этом запросе?