如何通过Cypher查询获取节点唯一属性键及对应节点计数?
统计Category节点属性键的节点拥有量
你说的这个场景太常见了——当同标签的节点属性键不统一时,确实需要统计每个属性到底被多少个节点持有。这里有个精准的Cypher语句可以直接实现需求:
MATCH (n:Category) UNWIND keys(n) AS propertyKey RETURN propertyKey, COUNT(DISTINCT n) AS nodeCount ORDER BY nodeCount DESC, propertyKey ASC;
语句拆解:
MATCH (n:Category):先捞取所有Category标签的节点UNWIND keys(n) AS propertyKey:把每个节点的属性键列表“拆”成单独的行,让每个属性键都和它所属的节点一一对应RETURN propertyKey, COUNT(DISTINCT n) AS nodeCount:按属性键分组,统计有多少不同的节点拥有这个键(加DISTINCT是为了严谨,避免极端情况比如单个节点重复出现该键时的错误计数,正常场景下用COUNT(n)也能得到正确结果)ORDER BY:最后按节点数量倒序、属性键名称正序排列,结果会更直观
预期输出(以你的示例数据为例):
| propertyKey | nodeCount |
|---|---|
| CreatedDate | 2 |
| Category | 2 |
| _lastModified | 2 |
| _x | 2 |
| _y | 2 |
| _created | 2 |
内容的提问来源于stack exchange,提问作者jleach
相关产品推荐
相关产品推荐

