大家好!我正在使用python py2neo工作,并且在返回“ COMPRAN ...”和“ COMPRAS STREETW ...”方面遇到麻烦,如您所见,这与“ Oscar”之间的两个最接近的注释与“ Oscar”间接相关。我的想法是以与“ COMPRAN ...”和“ COMPRAS STREETW ...”相关的相同方式返回与奥斯卡相关的所有节点的列表。
我正在尝试的代码如下:
lista = []
for record in db.run("MATCH (a:user)-[:watched]->(b:video), (b)-[:hasTag]->(c:tag), (b)-[:hasGenre]->(d:genre), (e:video)-[:hasGenre]->(d:genre), (e:video)-[:hasTag]->(c:tag) WHERE a.name = $name RETURN e.name UNION MATCH (a:user)-[:watched]->(b:video), (b)-[:hasGenre]->(d:genre), (e:video)-[:hasGenre]->(d:genre) RETURN e.name UNION MATCH (a:user)-[:watched]->(b:video), (b)-[:hasGenre]->(d:genre), (e:video)-[:hasTag]->(c:tag) RETURN e.name", name=name, video=video, tag=tag, genre=genre):
lista.append(record["e.name"])
return lista
我的问题是它只返回名称为“ COMPRAS STREETW ...”的节点,而我的想法是查询应返回此节点和“ COMPRAN ...”,因为它们与“ Oscar”间接相关”。感谢您的阅读,希望您能帮助我使它正常工作。
答案 0 :(得分:1)
此密码代码应该找到两个所需的节点:
MATCH
(u:user)-[:watched]->(v1),
(v1)-[:hasTag]->(t)<-[:hasTag]-(v2),
(v1)-[:hasGenre]->(g)<-[:hasGenre]-(v2)
WHERE u.name = $name
RETURN v2.name