我的客户端传递给我的Neo4j持久层的是集合对,我必须查找具有与这些对相对应的属性的节点。这是我提出的查询,它似乎工作(如:它返回我的测试用例的预期结果):
START root=node(0)
MATCH (root)-[:HAS_IDENTITY_PROVIDER]->(ip)<-[:IDENTITY_PROVIDER]-(claim)<-[:CLAIM]-(user)
WHERE [ip.Name, claim.IdentityProviderId] in [['facebook', 'f111'], ['facebook', 'f222'], ['facebook', 'f333'], ['twitter', 't444'], ['facebook', 'f555']]
RETURN user.Id AS Id, user.FirstName AS FirstName, user.LastName AS LastName, user.Avatar AS Avatar, count(*) AS Score
ORDER BY Score desc, FirstName, LastName;
现在我正在尝试编写另一个遵循类似方法的查询,但它失败了"NotFoundException: Unknown identifier 'user'
:
START root=node(0)
MATCH (root)-[:HAS_USER]->(user)
WHERE [user.FirstName, user.LastName] in [['Alice', 'Apple']]
RETURN user.Id AS Id, user.FirstName AS FirstName, user.LastName AS LastName, user.Avatar AS Avatar;
它抱怨user
条款中的WHERE
。
为什么第一个工作,第二个不工作?我无法发现它们之间的显着差异。
(另外,我不知道这种方法是否被视为某种黑客,或者如果有更好/更清洁/更快的方法来实现这一点,我总是愿意接受建议。)
谢谢!