使用一个Cypher查询在具有相同属性值的节点之间创建关系

拉斐尔F.

从Neo4j 1.9.2开始,并使用Cypher查询语言,我想在具有特定属性值的节点之间创建关系。我有一组具有属性H的节点G,目前在G节点之间不存在任何关系。

在Cypher语句中,是否可以通过H属性值对G个节点进行分组,并在成为同一组的每个节点之间创建关系HR?知道每个组的大小在2到10之间,而我大约有50k个G节点有超过15k个这样的组(15k个不同的H值)。

我已经尽力在不查找正确语法的情况下管理此类查询。以下是一个小样本数据集:

create 
(G1 {name:'G1', H:'1'}),
(G2 {name:'G2', H:'1'}),
(G3 {name:'G3', H:'1'}),

(G4 {name:'G4', H:'2'}),
(G5 {name:'G5', H:'2'}),
(G6 {name:'G6', H:'2'}),
(G7 {name:'G7', H:'2'})
return * ;

最后,我想要这样的关系:

G1-[:HR]-G2-[:HR]-G3-[:HR]-G1

和:

G4-[:HR]-G5-[:HR]-G6-[:HR]-G7-[:HR]-G4

在另一种情况下,我可能想使用/比较它们的某些属性来大量更新节点之间的关系。想象一下类型为N的节点和类型为M的节点,其中N个与M相关的节点之间的关系为:IS_LOCATED_ON。位置的顺序可以存储为N个节点的属性(N.relativePosition从1到MAX_POSITION为Long),但是稍后我们可能需要以如下方式更新图模型:使N个节点之间通过新的链接: PRECEDES关系,以便我们可以在给定集合上找到更容易,更快的下一个节点N。

我希望这种语言可能允许更新操纵其属性的大量节点/关系。

  • 不可能吗
  • 如果没有,那是有计划的还是有计划的?

任何帮助将不胜感激。

LameCoder

由于您提供的数据中没有任何要获得排名的数据,因此,我尝试使用集合来获得一个数据,如下所示:

START 
    n=node(*), n2=node(*) 
WHERE 
    HAS(n.H) AND HAS(n2.H) AND n.H = n2.H
WITH n, n2 ORDER BY n2.name
WITH n, COLLECT(n2) as others
WITH n, others, LENGTH(FILTER(x IN others : x.name < n.name)) as rank
RETURN n.name, n.H, rank ORDER BY n.H, n.name;

在此基础上,您可以开始确定关系

START 
    n=node(*), n2=node(*) 
WHERE 
    HAS(n.H) AND HAS(n2.H) AND n.H = n2.H
WITH n, n2 ORDER BY n2.name
WITH n, COLLECT(n2) as others
WITH n, others, LENGTH(FILTER(x IN others : x.name < n.name)) as rank
WITH n, others, rank, COALESCE(
    HEAD(FILTER(x IN others : x.name > n.name)),
    HEAD(others)
    ) as next
RETURN n.name, n.H, rank, next ORDER BY n.H, n.name;

最后(略微凝缩)

START 
    n=node(*), n2=node(*) 
WHERE 
    HAS(n.H) AND HAS(n2.H) AND n.H = n2.H
WITH n, n2 ORDER BY n2.name
WITH n, COLLECT(n2) as others
WITH n, others, COALESCE(
    HEAD(FILTER(x IN others : x.name > n.name)),
    HEAD(others)
    ) as next
CREATE n-[:HR]->next
RETURN n, next;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在具有共同属性的两个节点之间创建关系?

来自分类Dev

如何在具有共同属性的两个节点之间创建关系?

来自分类Dev

使用Cypher在具有set属性的所有节点之间创建关系

来自分类Dev

neo4j:用一个节点替换具有相同属性的多个节点

来自分类Dev

如何使用元素的属性值以jQuery中具有相同属性值的另一个元素为目标?

来自分类Dev

当不同类型的两个节点对于某个属性具有相同的值时,如何与 cypher 建立关系?

来自分类Dev

有什么方法可以创建一个与父窗口具有相同属性的子窗口?

来自分类Dev

如何创建具有与另一个系统提供给我的视图相同属性的表?

来自分类Dev

如何使用VB.net计算XML中具有相同属性值的节点总数

来自分类Dev

返回Cypher中具有相同属性B的节点的属性A的总和

来自分类Dev

从具有相同属性和内容的指令中调用另一个指令

来自分类Dev

如何找到与另一个具有相同属性的那些

来自分类Dev

使用LINQ从两个具有相同属性的不同列表创建对

来自分类Dev

如果属性存在,则 Neo4J 合并节点并创建另一个具有关系的节点

来自分类Dev

创建具有相同属性的方法

来自分类Dev

从一个类创建具有不同属性的对象-JAVA

来自分类Dev

创建一个NSSet数组,该数组具有另一个NSArray中存在的对象的不同属性的值

来自分类Dev

在一个密码查询中创建具有许多关系的唯一节点

来自分类Dev

jQuery-对数组进行排序,然后将一个类添加到具有相同属性的值中,并将前10个

来自分类Dev

具有输入单选和具有相同属性名称的一个文本输入的HTML表单

来自分类Dev

使用Cypher在Neo4j中的两个节点之间创建相同类型的多个关系

来自分类Dev

我可以为具有相同属性名称的两个类定义一个公共接口吗?

来自分类Dev

Neo4j:为具有相同属性的节点创建索引

来自分类Dev

与另一个有效的项目具有相同属性的项目上的 LNK2019 错误

来自分类Dev

如何在neo4j中创建具有相同节点名称的两个节点之间的关系

来自分类Dev

如何在xpath中选择第一个ul及其具有相同属性的子级

来自分类Dev

将两个数据集合并为一个,并获得具有相同属性的列的均值

来自分类Dev

函数应该将具有相同属性的项目返回到一个数组中

来自分类Dev

GraphViz文件中具有相同属性的节点组

Related 相关文章

  1. 1

    如何在具有共同属性的两个节点之间创建关系?

  2. 2

    如何在具有共同属性的两个节点之间创建关系?

  3. 3

    使用Cypher在具有set属性的所有节点之间创建关系

  4. 4

    neo4j:用一个节点替换具有相同属性的多个节点

  5. 5

    如何使用元素的属性值以jQuery中具有相同属性值的另一个元素为目标?

  6. 6

    当不同类型的两个节点对于某个属性具有相同的值时,如何与 cypher 建立关系?

  7. 7

    有什么方法可以创建一个与父窗口具有相同属性的子窗口?

  8. 8

    如何创建具有与另一个系统提供给我的视图相同属性的表?

  9. 9

    如何使用VB.net计算XML中具有相同属性值的节点总数

  10. 10

    返回Cypher中具有相同属性B的节点的属性A的总和

  11. 11

    从具有相同属性和内容的指令中调用另一个指令

  12. 12

    如何找到与另一个具有相同属性的那些

  13. 13

    使用LINQ从两个具有相同属性的不同列表创建对

  14. 14

    如果属性存在,则 Neo4J 合并节点并创建另一个具有关系的节点

  15. 15

    创建具有相同属性的方法

  16. 16

    从一个类创建具有不同属性的对象-JAVA

  17. 17

    创建一个NSSet数组,该数组具有另一个NSArray中存在的对象的不同属性的值

  18. 18

    在一个密码查询中创建具有许多关系的唯一节点

  19. 19

    jQuery-对数组进行排序,然后将一个类添加到具有相同属性的值中,并将前10个

  20. 20

    具有输入单选和具有相同属性名称的一个文本输入的HTML表单

  21. 21

    使用Cypher在Neo4j中的两个节点之间创建相同类型的多个关系

  22. 22

    我可以为具有相同属性名称的两个类定义一个公共接口吗?

  23. 23

    Neo4j:为具有相同属性的节点创建索引

  24. 24

    与另一个有效的项目具有相同属性的项目上的 LNK2019 错误

  25. 25

    如何在neo4j中创建具有相同节点名称的两个节点之间的关系

  26. 26

    如何在xpath中选择第一个ul及其具有相同属性的子级

  27. 27

    将两个数据集合并为一个,并获得具有相同属性的列的均值

  28. 28

    函数应该将具有相同属性的项目返回到一个数组中

  29. 29

    GraphViz文件中具有相同属性的节点组

热门标签

归档