Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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
Neo4j 限制每个标签的节点数_Neo4j_Cypher_Graph Databases - Fatal编程技术网

Neo4j 限制每个标签的节点数

Neo4j 限制每个标签的节点数,neo4j,cypher,graph-databases,Neo4j,Cypher,Graph Databases,我有一个图表,目前大约有几千个节点,每个节点有两到十个关系。如果我们看一个节点及其连接,它们看起来有点像这样: 带有字母字符的节点是类别节点。所有其他节点都是具有与这些类别节点关联的关系的内容节点,它们的颜色表示附加到它的标签。为简单起见,每个节点都有一个标签,每个节点仅连接到一个其他节点: 蓝色:类别 绿色:科学出版物 橙色:一般条款 紫色:博客帖子 现在,我尝试做的最简单的事情是将一定数量的相关内容节点添加到给定的节点。下面返回所有二十个相关节点: START n = node(1)

我有一个图表,目前大约有几千个节点,每个节点有两到十个关系。如果我们看一个节点及其连接,它们看起来有点像这样:

带有字母字符的节点是类别节点。所有其他节点都是具有与这些类别节点关联的
关系的内容节点,它们的颜色表示附加到它的标签。为简单起见,每个节点都有一个标签,每个节点仅连接到一个其他节点:

  • 蓝色:类别
  • 绿色:科学出版物
  • 橙色:一般条款
  • 紫色:博客帖子
现在,我尝试做的最简单的事情是将一定数量的相关内容节点添加到给定的节点。下面返回所有二十个相关节点:

START n = node(1)
MATCH (n)-->(category)<--(m)
RETURN m
START n=节点(1)

MATCH(n)-->(category)Cypher有一个
labels
函数,返回一个数组,其中包含给定节点的所有标签。假设每个
m
节点只有一个标签,则以下方法可能有效:

START n = node(1)
MATCH (n)-->(category)<--(m)
WITH labels(m)[0] as label, collect[m][0..2] as nodes 
UNWIND nodes as n
RETURN n
START n=节点(1)

MATCH(n)-->(category)此答案扩展了@Stefan的原始答案,以返回所有类别的结果,而不仅仅是其中一个类别的结果

START p = node(1)
MATCH (p)-->(category)<--(m)
WITH category, labels(m) as label, collect(m)[0..2] as nodes 
UNWIND label as lbl
UNWIND nodes AS n
RETURN category, lbl, n

不知何故,这会在遇到的第一个类别节点处停止。在上面的图上运行这个函数将返回四个节点(即2、3、4和6),这确实是我想要的,如果我只有一个类别,但是,在本例中,我将查找除4个节点之外的所有数字节点:16。
collect
方法覆盖了吗?哦,我明白了,
collect
创建了两个组,每个标签一个(因此大小分别为8和12)。执行类似于
collect(m)[0..8]
的操作将返回16个节点和每个标签的正确数量,但不是每个类别中每个标签的2个。谢谢,这确实是我要找的。
ORDER BY id(category), lbl