Шифрование запросов с использованием идентификатора узла

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

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

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

Рекомендации будут оценены.


person imamc    schedule 12.10.2011    source источник
comment
Просто примечание: в Neo4j 1.5 вы не можете использовать START foo=(42) ..., вы должны использовать START foo=node(42) ...   -  person prehfeldt    schedule 02.11.2011


Ответы (2)


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

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
person Michael Hunger    schedule 07.11.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

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

person Melug    schedule 25.10.2011
comment
Спасибо, Мелуг. Я попробую ваше предложение. Я совершенно уверен, что исходный запрос верен. - person imamc; 25.10.2011