Neo4j 查询不返回所需的输出

Neo4j Query Not Returning Desired Output

您好,我正在学习 Neo4j 数据库,我遇到了其中一个查询的问题,因为它似乎没有返回有效输出。这是我的完整数据集

给出问题的查询是MATCH (usr:USER)-[:KNOWS]->(lang:SKILL) where lang.name="Python" AND lang.name="FastAPI" return usr, 预期输出是 Vibhav 个节点。但是它没有返回任何值 请帮助我理解这一点。提前致谢!!

您正在同一个节点上设置两个谓词,这将不起作用,因为单个节点不能有两个名称。您需要做的是:

MATCH (lang2:SKILL)<-[:KNOWS]-(usr:USER)-[:KNOWS]->(lang:SKILL) 
where lang.name="Python" AND lang2.name="FastAPI" 
return usr

从可视化中我们可以看到一些urs有不止一种语言技能。因此,您可以使用 OR 逻辑并计算 returns:

MATCH (usr:USER)-[r:KNOWS]->(lang:SKILL) where lang.name="Python" OR lang2.name="FastAPI" with urs, count(*) as ct with usr where ct=2 return usr

这可能 运行 比 Tomaz 的建议快......你必须测试 it.This 假设你不会有重复的技能节点边。