запрос 1
MATCH (n:PC)-[r:C1|C2|U]->(n2) WHERE r.date IS NULL OR (r.date > 1 AND r.date < 15)
WITH n,n2,
reduce(t = 0, r in [x IN collect(r) WHERE type(x) = 'C1' or type(x) = 'C2'] | t + r.amount) as totalAmount1,
reduce(t = 0, r in [x IN collect(r) WHERE type(x) = 'U' ] | t + r.amount) as totalAmount2
WHERE totalAmount1 >= 1291 AND totalAmount2 >= 1000
RETURN COUNT(*)
запрос 2
MATCH (n:PC)-[r:C1|C2|U]->(n2) WHERE r.date IS NULL OR (r.date > 1 AND r.date < 15)
WITH n,
reduce(t = 0, r in [x IN collect(r) WHERE type(x) = 'C1' or type(x) = 'C2'] | t + r.amount) as totalAmount1,
reduce(t = 0, r in [x IN collect(r) WHERE type(x) = 'U' ] | t + r.amount) as totalAmount2
WHERE totalAmount1 >= 1291 AND totalAmount2 >= 1000
RETURN COUNT(*)
Как видите, эти 2 запроса ОЧЕНЬ похожи друг на друга. Единственная разница в том, что я использовал WITH n,n2
вместо WITH n
во втором запросе. Я ожидаю, что оба они вернут ОДИНАКОВЫЕ результаты.
НО запрос 1 возвращает 0, другой возвращает 113. почему? как?
Примечание: база данных содержит почти 7 миллионов узлов и 10 миллионов ребер.