2

我的客户端传递给我的 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;

它抱怨userinWHERE子句。

为什么第一个有效,第二个无效?我无法发现它们之间的显着差异。

(另外,我不知道这种方法是否被认为是某种黑客行为,或者是否有更好/更清洁/更快的方法来实现这一点,我总是愿意接受建议。)

谢谢!

4

0 回答 0