MATCH (e)
WHERE SIZE((e:Customer)<-[:Transaction]-()) <> 0
AND SIZE(()<-[:Transaction]-(e)) <> 0
MATCH path = (e)<-[:Transaction*10..15]-(e)
with e,nodes(path) as nods
UNWIND nods as node
RETURN e, COLLECT(DISTINCT node)
этот запрос будет делать. но вам не нужно делать
WHERE SIZE((e:Customer)<-[:Transaction]-()) <> 0
AND SIZE(()<-[:Transaction]-(e)) <> 0
, вместо этого
WHERE e:Customer AND (e)-[:Transaction]->() AND (e)<-[:Transaction]-()
будет лучше с точки зрения производительности