Неожиданное отношение и узел COUNT в Neo4j

Всякий раз, когда я использую запрос для получения количества определенного узла, я всегда получаю число больше 1, даже если существует только один отдельный тип этого узла.

Пример запроса:

MATCH (p)-[rel]->(v:myDistinctNode) RETURN COUNT(v)

Вывод: 80

MATCH (p)-[rel]->(v:myDistinctNode) RETURN COUNT(DISTINCT v)

Вывод: 1

Я вижу разные результаты при использовании DISTINCT, но я не могу использовать DISTINCT все время. Почему я это вижу и как этого избежать? Спасибо! Версия ядра Neo4j: 3.5.14


person ak2492    schedule 27.01.2021    source источник


Ответы (1)


Короткий ответ заключается в том, что вам нужно использовать оператор сбора, чтобы заставить его работать.

MATCH (p)<-[rel]-(v:myDistinctNode) WITH collect(v) AS nodes RETURN count(nodes)

Это должно вернуть один. Я не эксперт по шифрованию, но я считаю, что причина, по которой это не работает, заключается в том, что результат шифрования больше похож на таблицу, где в одной строке у вас есть p, в другой строке у вас есть r, а в последней строке у вас есть v. Несмотря на то, что v — уникальный объект, все еще есть 80 строк, содержащих v.

person bischrob    schedule 27.01.2021
comment
О, я понял. Спасибо за решение! @bischrob - person ak2492; 27.01.2021
comment
Я рад помочь. - person bischrob; 27.01.2021