如何用Cypher查询Neo4j中实体属性的数据类型?
如何用Cypher查询Neo4j节点属性的数据类型?
完全可以用Cypher实现这个需求,以下是具体的查询方案:
基础结构化查询
如果需要属性名与类型的结构化结果集,使用typeof()函数获取属性类型,结合UNWIND遍历节点的所有属性:
-- 匹配指定标签的节点,此处以Person为例 MATCH (p:Person) -- 展开节点的所有属性名 UNWIND keys(p) AS propKey -- 返回属性名和对应的数据类型 RETURN propKey, typeof(p[propKey]) AS propType ORDER BY propKey
针对你提供的示例节点,查询结果如下:
| propKey | propType |
|---|---|
| active | boolean |
| age | integer |
| name | string |
生成格式化文本结果
如果要输出你示例中name: string这类单行文本格式,可通过STRING_AGG将结果拼接成指定格式的字符串:
MATCH (p:Person) UNWIND keys(p) AS propKey WITH propKey + ': ' + typeof(p[propKey]) AS line RETURN STRING_AGG(line, '\n') AS formattedResult
返回的formattedResult内容为:
active: boolean age: integer name: string
注意事项
- 若需查询单个特定节点,可在
MATCH后添加WHERE条件(如WHERE p.name = 'Alice'),避免同标签节点存在属性类型不一致时的结果重复 typeof()返回的是Neo4j标准数据类型名称,包含string、integer、boolean、float、date等
内容的提问来源于stack exchange,提问作者Santiago Galiano Segura
相关产品推荐
相关产品推荐

