私はNode.js、Cypher、およびNeo4jを使用するプロジェクトに取り組んでいます。プロジェクトのフロントエンドは時々QUICKLYランダムユーザーを引き出す必要があります。私はこの質問をインターネットで見た:このサイファークエリはどのようにランダムノードを選択しますか?
MATCH (n:User) WHERE rand() < 0.1 RETURN 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
rand()
と0.1
は何をしますか?それは何とか潜在的なノードを返すように制限していますか?
このことができます場合は、あなたの質問はすでにWHERE
句が成功するためにMATCH
のための条件を指定し、述べたように、私は約1万ノード
Cypherのドキュメントを検索し、 'rand()'の説明を読んだことがありますか?他の言語の乱数ジェネレータとほとんど同じですか? –
なぜdownvote?私が知る限り、 'rand()'は0から0.99999までの乱数を返しますが、それはどのようにランダムなユーザを返しますか? – programmer5000
これはwhere句の単純な評価です。したがって、各ノードでは、比較される乱数になります。ダウンボュートはおそらく、そのクエリを実行して結果を見るだけで簡単です(ノードと一緒に乱数を返すだけで、何が戻ってくるかを知ることもできます)。 –