Ошибка понимания шаблона Neo4j с условием пути в предложении where - PullRequest
0 голосов
/ 23 мая 2018

Я использую Neo4j 3.4 и борюсь с этим конкретным запросом

MATCH (u:User)-[:IS_A_MEMBER_OF]->(c:Church)
RETURN size([(p:Post)<-[:POSTED]-(:User)-[:IS_A_MEMBER_OF]->(c) WHERE NOT (u)-[:ACKNOWLEDGED|POSTED]->(p) | p])

Этот запрос предназначен для получения количества сообщений для данной Церкви, которые пользователь еще не подтвердил и не опубликовал самостоятельно.,Другими словами, он должен получить все сообщения от членов церкви, затем выяснить, какие из них пользователь u не подтвердил и не опубликовал, и вернуть счет.

К сожалению, я не могу понять, почему Neo4jне выполняет проверку в предложении where.Есть ли что-то в шаблонах, которые мне не хватает?Поскольку возвращаемое число одинаково для всех пользователей, независимо от того, подтвердили ли они или опубликовали какие-либо сообщения.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 июля 2018

Я отправил похожий отчет об ошибке.Это кажется проблемой, начиная с 3.3.6.

https://github.com/neo4j/neo4j/issues/11967

0 голосов
/ 23 мая 2018

Вот рабочий пример, я использовал count вместо size, size для массивов, и здесь у вас есть строка узла, count объединит всю вашу строку в результат.

MATCH (u:User)-[:IS_A_MEMBER_OF]->(c:Church),
      (c)<-[:IS_A_MEMBER_OF]-(:User)-[:POSTED]->(p:Post)
WHERE NOT (u)-[:ACKNOWLEDGED|POSTED]->(p)
RETURN c, u, count(p)

Это возвращение для каждой церкви и членов этой церкви, ряд неподтвержденных сообщений, не опубликованных участником.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...