Cypher使用节点ID查询

时间:2011-10-12 11:52:18

标签: neo4j cypher spring-data-graph

让我们假设以下实体:

'用户'有'博客',博客有'条目'。博客可以有多个用户,条目有三个属性,用户,博客和字符串条目。我想编写一个cypher查询,返回特定博客和用户的所有条目。我有用户节点ID和博客ID。我可以使用用户ID启动节点但是如何使用博客ID?我无法访问任何其他唯一的东西,因此正在使用节点ID。

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

建议将不胜感激。

2 个答案:

答案 0 :(得分:2)

您还可以使用参数传递博客和用户ID。

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

然后使用包含Map的参数userId=1,blogId=2执行cypher查询。

如果您拥有blog-id,则无需传入用户。由于您没有指定用户和条目之间的关系(如AUTHOR),它将返回博客的所有条目,这可能不是您想要的。

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

答案 1 :(得分:0)

首先你的密码查询看起来不对,可能是其他版本而不是稳定版?

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

如果您有用户ID和博客ID,我认为您可以尝试一下:

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

我认为,在使用外键的图形数据库中是不必要的。