gpt4 book ai didi

neo4j - 对同一集合的不同属性使用 equals 不会返回任何记录,为什么?

转载 作者:行者123 更新时间:2023-12-01 08:51:13 25 4
gpt4 key购买 nike

当我使用以下查询时:

MATCH (emp:Employee)
WHERE emp.supervisor_id = 159
RETURN emp

我得到的结果是 4 个员工/节点,supervisor_id = 159

对于此查询,我还得到一个结果,即 1 名员工的 employeeID = 159 :

MATCH (emp:Employee)
WHERE emp.employeeID = 159
RETURN emp

但是当我使用=运算符时,它确实返回(无更改,无记录)

MATCH (emp:Employee)
WHERE emp.employeeID = emp.supervisor_id
RETURN emp

我认为这是一个逻辑错误,但我就是无法弄清楚。

任何想法请。

最佳答案

在您的查询中,您正在搜索带有标签 Employee 的节点,该节点的属性 employeeID 等于 supervisor_id

或者据我了解,您想要的是使用标签 Employee 搜索两个不同的节点。

所以你的查询应该是这样的:

MATCH (emp1:Employee), (emp2:Employee)
WHERE emp1.employeeID = emp2.supervisor_id
CREATE (emp1)-[:MANAGER_OF]->(emp2)

此查询创建笛卡尔积,因此,如果您有大量 Employee 节点,则应使用 APOC 过程批量创建关系 ( https://neo4j-contrib.github.io/neo4j-apoc-procedures/ )像这样:

CALL apoc.periodic.iterate(
"MATCH (emp1:Employee) RETURN emp1",
"MATCH (emp2:Employee) WHERE emp1.employeeID = emp2.supervisor_id CREATE (emp1)-[:MANAGER_OF]->(emp2)",
{batchSize:5000, parallel:true}
);

干杯

关于neo4j - 对同一集合的不同属性使用 equals 不会返回任何记录,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46583598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com