如何获取不同节点的所有属性名称

本文关键字:属性 节点 何获取 获取 | 更新日期: 2023-09-27 18:31:58

我想获得像使用Oracle一样的效果。

例如,我有两个表:StudentTearcher。我可以使用SQL获取两个表的所有列名。

现在,我有两个节点:一个带有标签Student,包括姓名、年龄、性别、等级属性,另一个带有标签Teacher和姓名、性别、薪水属性。

我可以使用Cypher获取Neo4jClient的所有属性名称吗?

谢谢 Z.汤姆

如何获取不同节点的所有属性名称

您可以使用

keys函数,如果要按标签获取属性,则可以与以下查询进行相应的匹配:

MATCH (a:Student) WITH keys(a) as k UNWIND k as x RETURN DISTINCT x

将返回标记为Student的节点上的所有现有属性

解释:

  • 查询匹配标记为 Student 的所有节点。
  • 它使用 keys 提取节点的属性键,然后将它们作为数组传递WITH
  • UNWIND捕获数组并将它们拆分为单行
  • RETURN DISTINCT将属性名称作为行返回,避免重复

在使用 Neo4jClient 的 C# 上,执行该查询的代码如下所示:

client = new GraphClient(new Uri(connString), dbuser, dbpass);
client.Connect();
var results = (Result)client.Cypher.Match("(a:Student)")
                                   .With("keys(a) as k")
                                   .Unwind("k as x")
                                   .ReturnDistinct<Result>("x")
                                   .Results.ToList()

为这样的结果设置一个类:

public class Result
{
    public string x { get; set; }
}