簡體   English   中英

如何基於父節點在兩個隨機節點之間創建關系?

[英]How can I create a relationship between two random nodes based on parent node?

我正在為我的公司開發PoC,以努力轉向圖形數據庫,以利用使用圖形數據庫帶來的一些關系分析收益。

我創建了一個數據集,如下所示:

foreach (x in range(1,1400) | create (:District {name: "District " + x, id: "district-" + x}))
foreach (x in range(1,10000) | create (:School {name: "School " + x, id: "school-" + x}))
foreach (x in range(1,50000) | create (:Teacher {name: "Teacher " + x, id: "teacher-" + x}))
foreach (x in range(1,50000) | create (:Class {name: "Class " + x, id: "class-" + x}))

我已經開始使用以下查詢創建基本關系:

創建學校->地區

match (s: School)
match (d: District)
with collect (distinct s) as school, collect (distinct d) as districts

foreach (school in schools |
    foreach (district in [districts[toInteger(rand()*size(districts))]] |
        create unique (school)-[:belongs_to]->(district)
        )
    )

建立課程->學校

match (c:Class)
match (s:School)
with collect (distinct c) as classes, collect (distinct s) as schools

foreach (class in classes |
    foreach (school in [schools[toInteger(rand()*size(schools))]] |
        create unique (class)<-[:has]-(school)
        )
    )

創建老師->學校

match (t:Teacher)
match (s:School)
with collect (distinct t) as teachers, collect (distinct s) as schools

foreach (teacher in teachers |
    foreach (school in [schools[toInteger(rand()*size(schools))]] |
        create unique (teacher)-[:teachers_at]->(school)
        )
    )

我當前面臨的問題是:我需要帶每個老師並將其隨機分配給0-2個班級,但僅適用於該老師所教學校的班級。 我嘗試過將MATCH語句放在FOREACH塊中,但這違反了Cypher查詢的規則。

我正在尋找有關創建此特定查詢的建議。

注意:順便說一句,我將不得不為一組250,000名學生(隨機分配到學校,然后隨機分配到0-4個班級)再次執行此過程。

您可以從教師到學校中選擇一種模式。 然后從學校上課。 然后對類進行隨機排序,然后使用限制:

MATCH (teacher:Teacher) WITH teacher
MATCH (teacher)-[:teachers_at]->(:School)-[:has]->(class:Class)
WITH teacher, 
     class ORDER BY RAND()
WITH teacher, 
     collect(class)[0..toInteger(rand()*3)] as classes
UNWIND classes as class
CREATE (teacher)-[:has_class]->(class)

暫無
暫無

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

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