Neo4j查询中两个不同的值

Neo4j查询中两个不同的值,neo4j,Neo4j,我正在向Neo4j数据库发送一个查询,我只想返回有两个数字的项—tsneX和tsneY作为一个不同的“点”。因此,tsneX可以等于tsneX,但在这种情况下,第二个数字tsneY不应等于。我的问题是: MATCH (c:Cell)-[ex:EXPRESSES]->(g:Gene { geneName: "' + geneName + '" }) RETURN ex.expr, c.tsneX, c.tsneY; 所以,我想要像这样的smth MATCH (c:Cell)-[ex:E

我正在向Neo4j数据库发送一个查询,我只想返回有两个数字的项—tsneX和tsneY作为一个不同的“点”。因此,tsneX可以等于tsneX,但在这种情况下,第二个数字tsneY不应等于。我的问题是:

MATCH (c:Cell)-[ex:EXPRESSES]->(g:Gene { geneName: "' + geneName + '" }) 
RETURN ex.expr, c.tsneX, c.tsneY; 
所以,我想要像这样的smth

MATCH (c:Cell)-[ex:EXPRESSES]->(g:Gene { geneName: "' + geneName + '" }) 
WITH DISTINCT (c.tsneX, c.tsneY) AS point
RETURN ex.expr, point; 
例如:

其中一个-第1个或第3个需要删除,因为它们的tsneX和tsneY坐标分别相等。所以,我只希望返回第一个和第二个,但第三个将被删除,因为ex.expr在第一个中更高


如果您有任何建议,我们将不胜感激。

因此您需要[c.tsneX,c.tsneY]对,如果在同一点上有更多结果,您只需要higheset ex.expr。这应该可以做到:

MATCH (c:Cell)-[ex:EXPRESSES]->(g:Gene { geneName: "' + geneName + '" }) 
RETURN [c.tsneX, c.tsneY] AS point, max(ex.expr) as expr
如果希望将点作为对象而不是列表,则可以执行以下操作:

{x:c.tsneX, y:c.tsneY} AS point

在任何一种情况下,maxex.expr聚合函数都将确保剩余的非聚合值point是不同的。

您能否进一步说明您在这里想要什么?例如,一个示例结果集,显示您希望如何对其进行过滤以获得所需的结果?哦,我只需要一种方法,将两个值(tsneX和tsneY)组合到一个对象中,如果两个值分别不等于另一个这样的点对象,则强制使其不同。
{x:c.tsneX, y:c.tsneY} AS point