Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Random 编写密码查询以在随机节点之间创建链接_Random_Neo4j_Cypher - Fatal编程技术网

Random 编写密码查询以在随机节点之间创建链接

Random 编写密码查询以在随机节点之间创建链接,random,neo4j,cypher,Random,Neo4j,Cypher,为了给数据库添加种子,我想创建一小组Person节点 WITH ["Amy","Bob","Cal","Dan","Eve"] AS names FOREACH (r IN range(0, size(names)-1) | CREATE (:Person {name: names[r]}) ) 。。。我想为每个人创建一个随机连接。是否可以在单个查询中执行此操作 我想我需要将每个新人添加到一个集合中,并使用从FLOOR创建的变量(RAND()*size(names)),但官方文档并没有给出

为了给数据库添加种子,我想创建一小组Person节点

WITH ["Amy","Bob","Cal","Dan","Eve"]
AS names
FOREACH (r IN range(0, size(names)-1) |
  CREATE (:Person {name: names[r]})
)
。。。我想为每个人创建一个随机连接。是否可以在单个查询中执行此操作

我想我需要将每个新人添加到一个集合中,并使用从FLOOR创建的变量(RAND()*size(names)),但官方文档并没有给出很多关于如何做到这一点的线索。

问得好

有几件事,首先我通常更喜欢
放松
而不是
FOREACH
,尤其是在这样的情况下:

WITH ["Amy","Bob","Cal","Dan","Eve"] AS names
UNWIND names AS name
CREATE (:Person {name: name})
至于创建随机关系,Michael Hunger有一篇很好的博客文章对此进行了介绍:

在您的情况下,它将类似于:

MATCH (p1:Person), (p2:Person)
WITH p1, p2
WHERE rand() < 0.1
MERGE p1-[:LIKES]->p2
匹配(p1:个人),(p2:个人)
用p1,p2
其中rand()小于0.1
合并p1-[:LIKES]>p2

只需注意这一点,因为第一个
匹配
指定了所有人与所有其他人的完全笛卡尔积,随着
节点的增长,该积可以快速增长。Michael在帖子中用对自己的
设置了一个
限制

非常感谢您的支持,以及Michael Hunger文章的链接。下面是我现在使用的一个查询:
以[“艾米”、“鲍勃”、“卡尔”、“丹”、“伊芙”]为名称展开名称作为名称创建p=(:Person{name:name})与p匹配(p1:Person),(p2:Person)与p1,p2其中rand()<0.3和p1合并p1-[:LIKES]>p2返回不同的p1,p2
。我添加了
p1p2
,这样链接总是在不同的节点之间。