Neo4j 这个密码查询如何选择随机节点?

Neo4j 这个密码查询如何选择随机节点?,neo4j,cypher,Neo4j,Cypher,我正在从事一个使用Node.js、Cypher和Neo4j的项目。项目前端偶尔需要快速拉一个随机用户。我在互联网上看到过这个问题: MATCH (n:User) WHERE rand() < 0.1 RETURN n LIMIT 21 匹配(n:User),其中rand()返回n LIMIT 21 但我不知道这是怎么回事。它看起来很快,但我想理解它。我所知的分类: MATCH | Match some nodes (n:User) | Let's call this node n

我正在从事一个使用Node.js、Cypher和Neo4j的项目。项目前端偶尔需要快速拉一个随机用户。我在互联网上看到过这个问题:

MATCH (n:User) WHERE rand() < 0.1 RETURN n LIMIT 21
匹配(n:User),其中rand()返回n LIMIT 21
但我不知道这是怎么回事。它看起来很快,但我想理解它。我所知的分类:

MATCH    | Match some nodes
(n:User) | Let's call this node n, and it has to be of type User
WHERE    | Specify conditions for node match
rand()   | Return a random number from 0 to 0.9999...
<        | Less than
0.1      | ??
RETURN   | Give back the matched node(s)
n        | Our node(s)
LIMIT 21 | Don't return more than 21 nodes
MATCH |匹配一些节点
(n:User)|让我们调用这个节点n,它必须是User类型
其中|指定节点匹配的条件
rand()|返回0到0.9999之间的随机数。。。
<|小于
0.1      | ??
RETURN |返回匹配的节点
n |我们的节点
限制21 |返回的节点不超过21个
rand()
0.1
有什么作用?它是否以某种方式限制了潜在节点的返回


如果这有帮助的话,我有大约10000个节点

,正如您的问题所述,
WHERE
子句指定了
匹配
成功的条件。因此,
其中rand()<0.1
意味着
匹配的成功概率为10%。

您是否查阅了Cypher文档并阅读了
rand()
的描述(这与其他语言中的任何随机数生成器几乎相同)?为什么会投反对票?据我所知,
rand()。。。但是它如何返回一个随机用户呢?这只是where子句中的一个简单求值。因此,对于每个节点,都会得到一个随机数进行比较。向下投票可能是因为运行该查询并查看结果非常简单(甚至只返回随机数和节点,以查看返回的结果)。感谢您解释了
0.1
部分,没有任何注释解释!