Это может сработать для вас:
MATCH (u:Thing)-[:DEPENDS_ON]->(:Thing)<-[:DEPENDS_ON*]-(:Thing)<-[:STARTED_WITH]-(o)
WHERE ID(o) = 1
WITH u, COUNT(*) AS num
WHERE SIZE((u)--()) = num
RETURN u
Запрос использует эффективную проверку степени защиты, чтобы получить общее количество отношений для u
, и сравнивает это с количеством раз, когда u
удовлетворилMATCH
.Кроме того, поскольку вы идентифицируете o
по его собственному идентификатору (который, как я предполагаю, всегда будет идентификатором для Otherthing
), более эффективно не указывать его метку (чтобы избежать операции проверки метки).