cypher计算节点之间连接的不同排列

时间:2013-10-06 12:00:51

标签: neo4j cypher

我在neo4j中有一个搜索项目图表模型。

所以我有以下数据类型节点: ItemKey, 和category

  • 每个Item都有几个连接的key s
  • 每个Category都有几个连接的key s

我想对图表进行统计检查。我想知道我是否从每个key中取出一个category - 每组密钥有多少连接Item

所以,如果我来自key_A的{​​{1}}(12)和来自category_A的{​​{1}}(34),我可以这样做:

key_B

非常简单......但我需要为每组键运行相同的操作。 (每个类别中的一个键)

如何为每个键的排列运行相同的问题?

2 个答案:

答案 0 :(得分:2)

找到了答案!

start cat1=node:node_auto_index(name="Category1"),cat2=node:node_auto_index(name="Category2")
MATCH (item) --> (key1)<--(cat1),
      (item)--> (key2)<--(cat2)
where (item.type="item")
with key1, key2 , collect(distinct item.name) as items    
return key1.name,key2.name, items, length(items)

答案 1 :(得分:0)

你能试试吗?

start cat=node:node_auto_index("name:(Category1 Category2 Category3")
MATCH (item)-->(key)<--(cat)
where (item.type="item")
with key.name as key_name, collect(distinct item.name) as items
order by key.name
with collect(key_name) as keys, reduce(a=[],i in collect(items) : a + i) as items2
return keys, items2, length(items2)

可能会将示例数据集发布到http://console.neo4j.org

或将其描述为图形要点(http://gist.neo4j.org)会很棒。