簡體   English   中英

寫一個Cypher查詢來創建隨機節點之間的鏈接

[英]Write a Cypher query to CREATE links between random nodes

為了種子數據庫,我想創建一小組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不是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/

在你的情況下,它將是這樣的:

MATCH (p1:Person), (p2:Person)
WITH p1, p2
WHERE rand() < 0.1
MERGE p1-[:LIKES]->p2

請注意這一點,因為第一個MATCH指定了所有其他人的完整笛卡爾積,可以隨着Person節點的增長而快速增長。 邁克爾在帖子中對他的WITH進行了LIMIT

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM