我的关系如下:
(U:用户) - [r:标记{tagID,timestamp}] - >(P:播放器{名称='汤姆'})
User1 tagged player Tom,the tagID is 1 and the tagName is good
User2 tagged player Tom,the tagID is 2 and the tagName is bad
和节点如:
(t:tag {tagID,tagName})
tagID tagName
1 Good
2 Bad
节点'标记'并且标记的关系使用相同的tagID,如何根据给定的玩家名称(例如Tom)找到所有tagName,例如Good,Bad等?我尝试下面的事情:
match (:User)-[r:tagged]->(P:Player{Name:'Tom'}),(t:tag)
where t.tagID=r.tagID
return t.tagName
order by tagName desc
limit 20
我得到语法错误 我期待的是
tagName
Good
Bad
答案 0 :(得分:0)
如果没有更多信息,很难回答你的问题。
1.在你的关系描述中没有property3
。
2.您还没有包含有关您的对象或其关系的真实信息。
我的猜测是你想要这样的东西:
match(b {property0:'VALUE0'}) match(b)<-[r:{property1:'VALUE1', property2:'VALUE2'}]-(a) return a
这基本上是说,创建一个变量b并为其分配db中具有value0等于VALUE的property0的对象。然后创建另一个变量a并为其分配与b具有关系的值,其中关系的property1等于VALUE1,property2等于VALUE2。 如果您不想要的话,请详细说明您要完成的工作以及您收到的错误。
答案 1 :(得分:0)
编辑完成后,您的查询看起来几乎正确,只需稍作调整即可。
您可能应该添加语法错误,但我猜它是因为您尝试仅按&#34; tagName&#34;进行订购,这不是变量或列中的范围(&#34; t.tagName&#34;在范围内,您可能想要别名)
您还希望确保在匹配的代码上使用tagID后面的某处使用distinct,因为多个人可能会使用相同的代码标记播放器
试试这个:
match (:User)-[r:tagged]->(:Player{Name:'Tom'})
with distinct r.tagID as tagID
match (t:tag)
where t.tagID = tagID
return t.tagName AS tagName
order by tagName desc
limit 20