Neo4j cypher:通过表达式限制返回的结果

时间:2015-09-16 10:10:07

标签: neo4j cypher

我正在尝试将结果限制为随机集。到目前为止,我有这个查询工作:

MATCH (n),
RETURN n, rand() as random
ORDER BY random
LIMIT 25

但是,在尝试使用随机数替换LIMIT 25时,出现以下两个密码示例中的错误:

MATCH (n)
RETURN n, rand() as random, toInt(rand()*25) as randCount
ORDER BY random
LIMIT randCount

在上文中,删除LIMIT会正确返回randcount

WITH toInt(rand()*25) as randCount
MATCH (n)
RETURN n, rand() as random
ORDER BY random
LIMIT randCount

我的直接想法是Cypher(还)不支持使用变量/表达式来限制结果...或者我做错了;-)

1 个答案:

答案 0 :(得分:2)

我尝试了你的例子,你说得对,cypher不支持变量作为LIMIT的参数。

以下是您正在寻找的证据:

我开始了上面的查询:

PROFILE 
MATCH (n)
RETURN n, rand() as random, toInt(rand()*25) as randCount
ORDER BY random
LIMIT 1

结果如下:

PROFILE Result

正如您在配置文件结果中看到的那样,{radCount受影响之前会执行LIMIT,因此当您执行LIMIT randCount randCount时,就像您创建的所有其他变量一样。

即使在Projection部分中进行了随机操作,其值也不会立即影响到randCount。