2015-07-01 2 views
1

У меня есть график, который содержит 3 типа узлов: Post, User, Cat, у каждой кошки есть так много сообщений, которые связаны друг с другом «отношениями», каждый пользователь может прокомментировать эти сообщения и комментарий - это «Комментированные» отношения с свойством «content» и «id».
Я хочу получить сообщения о кошке и обо всех комментариях, связанных с каждым сообщением.
Я пробовал это, но это не дает мне сообщения без комментариев:cypher query get wrong results

MATCH (cat:Cat {id:1})-[:lastPost]->(last)-[:next*0..]->(rest) 
MATCH (rest)<-[c:Commented]-(u:User) 
RETURN c, rest 

Есть ли способ добиться того, чего я хочу в Cypher? спасибо

ответ

2

Попробуйте изменить второе MATCH заявления на OPTIONAL MATCH:

MATCH (cat:Cat {id:1})-[:lastPost]->(last)-[:next*0..]->(rest) 
OPTIONAL MATCH (rest)<-[c:Commented]-(u:User) 
RETURN c, rest 

Есть ценности, которые не соответствуют OPTIONAL MATCH шаблона будет NULL.

+0

спасибо, это работает, если я хочу получить результат тезисов в C# с помощью neo4jclient, следует ли использовать пару или что-то в этом роде? – Rawhi

+0

@Rawhi Я не слишком знаком с neo4jclient, но [здесь] (https://github.com/Readify/Neo4jClient/wiki/cypher-examples#get-a-user-and-the-count-of-their -друзья) представляет собой пример neo4jclient, используя инструкцию 'OPTIONAL MATCH'. –