在我的例子中,节点与一个或多个类型为similar
的关系相关联。此关系有两个属性fldName
和value
。例如:
(x)-[r:similar {fldName:'e-mail', value: 'name@x.y.com' }]->(y)
(x)-[r:similar {fldName:'phone', value: '123-45-67' }]->(y)
(q)-[r:similar {fldName:'e-mail', value: 'other@x.y.com' }]->(p)
(q)-[r:similar {fldName:'phone', value: '891-23-45' }]->(p)
(s)-[r:similar {fldName:'e-mail', value: 'neo@x.y.com' }]->(t)
问题:
1)返回以下单独的组结果的查询是什么:
group 1: x,y; number of relations: 2
group 2: q,p; number of relations: 2
group 3: s,t; number of relations: 1
2)是否可以在没有先验知识的情况下编写此查询关系属性的值?
答案 0 :(得分:0)
对于您想要实现的目标,我建议您使用标签。您可以按如下方式填充数据库:
merge (:x)-[:similar {fldName:'e-mail', value: 'name@x.y.com' }]->(:y)
merge (:x)-[:similar {fldName:'phone', value: '123-45-67' }]->(:y)
merge (:q)-[:similar {fldName:'e-mail', value: 'other@x.y.com' }]->(:p)
merge (:q)-[:similar {fldName:'phone', value: '891-23-45' }]->(:p)
merge (:s)-[:similar {fldName:'e-mail', value: 'neo@x.y.com' }]->(:t)
在这里,您将使用标签x,y,q,p,s和t创建节点。
您可以使用以下查询对结果进行分组:
MATCH (x)-[r:similar]->(y)
RETURN labels(x), labels(y), count(r) as relCount
请参阅Neo4j console了解结果。