Я работаю над проектом, который использует Node.js, Cypher и Neo4j. Передняя часть проекта иногда нуждается в QUICKLY вытащите случайного пользователя. Я видел этот запрос в Интернете:Как этот запрос cypher выбирает случайный узел?
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
делать? Это как-то ограничивает потенциальные узлы для возврата?
Если это помогает, у меня есть около 10 000 узлов
Вы просмотрели документы Cypher и прочитали описание 'rand()' (что почти так же, как и любой генератор случайных чисел на других языках)? –
Почему downvote? Насколько мне известно, 'rand()' возвращает случайное число от 0 до 0.99999 ... но как это возвращает случайного пользователя? – programmer5000
Это просто простая оценка в предложении where. Таким образом, с каждым узлом вы получаете случайное число, которое сравнивается. Сдвиги, вероятно, связаны с тем, что так просто просто запустить этот запрос и увидеть результаты (даже просто вернув случайное число вместе с узлом, чтобы увидеть, что возвращается). –