为了建立数据库,我想创建一小组 Person 节点......
WITH ["Amy","Bob","Cal","Dan","Eve"]
AS names
FOREACH (r IN range(0, size(names)-1) |
CREATE (:Person {name: names[r]})
)
...我想为每个人创建一个随机连接。是否可以在单个查询中完成此操作?
我想我需要将每个新的 Person 添加到一个集合中,并使用从 FLOOR(RAND() * size(names)) 创建的变量,但官方文档没有提供很多关于如何执行此操作的线索。
好问题!
有几件事,首先我经常更喜欢UNWIND
over FOREACH
,特别是在这样的情况下:
WITH ["Amy","Bob","Cal","Dan","Eve"] AS names
UNWIND names AS name
CREATE (:Person {name: name})
至于创建随机关系,Michael Hunger 有一篇很好的博客文章对此进行了介绍:
http://jexp.de/blog/2014/03/quickly-create-a-100k-neo4j-graph-data-model-with-cypher-only/ http://jexp.de/blog/2014/03/quickly-create-a-100k-neo4j-graph-data-model-with-cypher-only/
在你的情况下,它会是这样的:
MATCH (p1:Person), (p2:Person)
WITH p1, p2
WHERE rand() < 0.1
MERGE p1-[:LIKES]->p2
作为第一个,请小心MATCH
指定所有人与所有其他人的完整笛卡尔积,可以随着您的增长而快速增长Person
节点增长。迈克尔提出了一个LIMIT
on his WITH
在文中
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)