Запрос Cypher с использованием идентификатора узла - PullRequest
1 голос
/ 12 октября 2011

Предположим, что следующие сущности:

У «пользователя» есть «блог», а в блоге есть «записи».Блог может иметь несколько пользователей, а запись имеет три свойства: пользователя, блог и строковую запись.Я хочу написать запрос шифра, который возвращает все записи для определенного блога и пользователя.У меня есть и идентификатор узла пользователя, и идентификатор блога.Я могу использовать идентификатор пользователя для запуска узла, но как можно использовать идентификатор блога?У меня нет доступа ни к чему другому, уникальному, поэтому используется идентификатор узла.

start user=(1) match (user)->[:BLOG]-(blog)->[:ENTRY](entry) where entry.blog = blogId return entry

Рекомендации будут приветствоваться.

Ответы [ 2 ]

2 голосов
/ 07 ноября 2011

Вы также можете использовать параметры для передачи в блоге и идентификаторы пользователей.

START user=({userId}), blog=({blogId}) MATCH user-[:BLOG]->blog-[:ENTRY]->entry RETURN entry

затем выполните запрос шифра с параметром- Map, который содержит userId=1,blogId=2.

Если у вас есть идентификатор блога, вам не нужно передавать имя пользователя. Поскольку вы не указали связь между пользователем и записью (например, AUTHOR), она вернет все записи блога, что, вероятно, не то, что вам нужно.

START user=({userId}), blog=({blogId}) MATCH blog-[:ENTRY]->entry<-[:AUTHOR]-user RETURN entry
0 голосов
/ 25 октября 2011

Сначала ваш запрос на шифрование выглядит неправильно, может, другая версия, кроме стабильной?

start user=(1) match (user)->[:BLOG]-(blog)->[:ENTRY](entry) where entry.blog = blogId return entry

Если у вас есть идентификатор пользователя и идентификатор блога, я думаю, вы можете попробовать это:

START user=(userId), blog=(blogId) MATCH user-[:BLOG]->blog-[:ENTRY]->entry RETURN entry

Я думаю, что в графовой базе данных использование внешнего ключа не нужно.

...