Я хочу иметь возможность вернуть список Item
узлов с их списком вложенных Item
узлов, содержащихся в Box
.Поскольку отношения между узлами Item
и их вложенными узлами Item
могут быть разными (например, WHEELS
, WINDOWS
, LIGHTS
), я хотел бы написать запрос, который пропускает связи и возвращает любые вложенныеУзел Item
и их Item
дочерние элементы, потому что Item
будет иметь по крайней мере один дочерний элемент Item
или его нет (что приведет к пустому списку дочерних элементов)
Я хочу быть в состоянии сделать это с помощью всего лишь переданного Box
идентификатора (например, boxID
).
ПРИМЕЧАНИЕ: Я новичок в Neo4j и Cypher, поэтому, пожалуйста, ответьте (довольно) подробным ответом о том, какзапрос работает.Я хочу быть в состоянии понять, как это работает.Спасибо!
Например
MATCH (iA: Item)-[r]->(iB: Item)-[r]->(b: Box)
WHERE b.boxID = $boxID
RETURN COLLECT(iB.itemID AS ItemID, ib.name as ItemName, COLLECT(iA.itemID as ItemID, iA.name as ItemName, COLLECT(...) ) AS ItemChildren)
Часть COLLECT(..)
смущает меня.Как вернуть Item
узел и все его Item
дочерние элементы и все эти дочерние элементы Item
дочерние элементы и т. Д. До пустых дочерних элементов?Есть ли лучший способ MATCH
всех узлов?