今天我试图扩展我在一个非常小的测试数据库上运行的查询,但我认为我必须触发某种无限循环,因为它一直执行直到它返回一个未定义的错误
所以我不知道问题是什么,我正在寻找建议......
此查询有效
MATCH (n:whatnot), (u:user)
OPTIONAL MATCH (u)-[r1:favorites]->(n)
WHERE id(u)=1
RETURN
id(n) AS id ,
CASE
WHEN length((u)-[r1]->(n)) > 0 THEN 1
ELSE 0
END AS favorites
ORDER BY id DESC
这也有效
MATCH (n:whatnot), (u:user) , (m)
WHERE id(u)=1 AND id(m) = 73298 AND (n)-->(m)
RETURN id(n) AS id
但是如果我试图像这样一起运行它们,你甚至可以分享结果
MATCH (n:whatnot), (u:user) , (m)
OPTIONAL MATCH (u)-[r1:favorites]->(n)
WHERE id(u)=1 AND id(m) = 73298 AND (n)-->(m)
RETURN
id(n) AS id ,
CASE
WHEN length((u)-[r1]->(n)) > 0 THEN 1
ELSE 0
END AS favorites
ORDER BY id DESC
进入无限循环
我错过了什么?
很多,谢谢你答案 0 :(得分:3)
你需要在OPTIONAL MATCH之前为顶部MATCH做WHERE。另外,如果可以,最好在MATCH中执行谓词模式。
MATCH (n:whatnot)-->(m), (u:user)
WHERE id(u)=1 AND id(m)=73298
OPTIONAL MATCH (u)-[r1:favorites]->(n)
RETURN
id(n) AS id ,
CASE
WHEN length((u)-[r1]->(n)) > 0 THEN 1
ELSE 0
END AS favorites
ORDER BY id DESC