neo4j 获取符合条件的值
neo4j get values that match a criteria
我正在处理一个 neo4j 查询,试图 return 一个总所有权为 1(代表 100%)的节点。所以我总结了一个节点的所有权。我获取所有权总和的查询工作正常,如下所示:
match (o:owner)-[:mineral_interest_owner]->(w:well)
return sum(o.ownership)
然后我尝试在表达式中使用它:
match (o:owner)-[:mineral_interest_owner]->(w:well)
return sum(o.ownership)
case
when sum(o.ownership) = 1
then w.name
else "None"
并得到这个错误:
Neo.ClientError.Statement.SyntaxError: Invalid input 's': expected 'l/L' (line 3, column 3 (offset: 78))
"case"
^
这是我需要使用 APOC 的目的吗?
您需要聚合然后使用 where
:
MATCH (o:owner)-[:mineral_interest_owner]->(w:well)
WITH w,
sum(o.ownership) AS cnt WHERE cnt = 1
RETURN w
除了您眼前的问题,您的数据模型似乎还需要改进。 ownership
属性 应该 而不是 在 owner
节点上,因为这意味着所有者对s/he 有兴趣。相反,ownership
属性 应该在 mineral_interest_owner
关系上——这将允许所有 ownership
百分比不同。
假设您将上述数据模型改进合并到您的数据库中,此查询应该 return 所有 owner
/well
对,其中所有者拥有该井的 100%。
MATCH (owner:owner)-[i:mineral_interest_owner]->(well:well)
WITH owner, well, SUM(i.ownership) AS pct
WHERE pct = 1
RETURN owner, well;
我正在处理一个 neo4j 查询,试图 return 一个总所有权为 1(代表 100%)的节点。所以我总结了一个节点的所有权。我获取所有权总和的查询工作正常,如下所示:
match (o:owner)-[:mineral_interest_owner]->(w:well)
return sum(o.ownership)
然后我尝试在表达式中使用它:
match (o:owner)-[:mineral_interest_owner]->(w:well)
return sum(o.ownership)
case
when sum(o.ownership) = 1
then w.name
else "None"
并得到这个错误:
Neo.ClientError.Statement.SyntaxError: Invalid input 's': expected 'l/L' (line 3, column 3 (offset: 78))
"case"
^
这是我需要使用 APOC 的目的吗?
您需要聚合然后使用 where
:
MATCH (o:owner)-[:mineral_interest_owner]->(w:well)
WITH w,
sum(o.ownership) AS cnt WHERE cnt = 1
RETURN w
除了您眼前的问题,您的数据模型似乎还需要改进。 ownership
属性 应该 而不是 在 owner
节点上,因为这意味着所有者对s/he 有兴趣。相反,ownership
属性 应该在 mineral_interest_owner
关系上——这将允许所有 ownership
百分比不同。
假设您将上述数据模型改进合并到您的数据库中,此查询应该 return 所有 owner
/well
对,其中所有者拥有该井的 100%。
MATCH (owner:owner)-[i:mineral_interest_owner]->(well:well)
WITH owner, well, SUM(i.ownership) AS pct
WHERE pct = 1
RETURN owner, well;