如何获取不同节点的所有 属性-names?
How can I get all the property-names of different nodes?
我想得到像使用Oracle一样的效果
例如,我有两个表:Student
、Tearcher
。我可以使用 SQL.
获取两个表的所有列名
现在,我有两个节点:一个带有标签 Student
,带有姓名、年龄、性别、年级属性,另一个带有标签 Teacher
和姓名、性别、薪水属性。
我可以使用 Cypher 通过 Neo4jClient 获取所有 属性 名称吗?
谢谢Z.Tom
你可以使用 keys
函数,如果你想通过标签获取属性,你可以相应地匹配如下查询:
MATCH (a:Student) WITH keys(a) as k UNWIND k as x RETURN DISTINCT x
将 return 标记为 Student
的节点上的所有现有属性
解释:
- 查询匹配所有标记为
Student
的节点。
- 它使用
keys
提取节点的属性键,然后将它们作为数组传递WITH
UNWIND
捕获数组并将它们拆分为单行
RETURN DISTINCT
return 将 属性 命名为避免重复的行
例子
在 C# 上使用 Neo4jClient 执行该查询的代码类似于:
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()
为这样的结果设置 class:
public class Result
{
public string x { get; set; }
}
我想得到像使用Oracle一样的效果
例如,我有两个表:Student
、Tearcher
。我可以使用 SQL.
现在,我有两个节点:一个带有标签 Student
,带有姓名、年龄、性别、年级属性,另一个带有标签 Teacher
和姓名、性别、薪水属性。
我可以使用 Cypher 通过 Neo4jClient 获取所有 属性 名称吗?
谢谢Z.Tom
你可以使用 keys
函数,如果你想通过标签获取属性,你可以相应地匹配如下查询:
MATCH (a:Student) WITH keys(a) as k UNWIND k as x RETURN DISTINCT x
将 return 标记为 Student
解释:
- 查询匹配所有标记为
Student
的节点。 - 它使用
keys
提取节点的属性键,然后将它们作为数组传递WITH
UNWIND
捕获数组并将它们拆分为单行RETURN DISTINCT
return 将 属性 命名为避免重复的行
例子
在 C# 上使用 Neo4jClient 执行该查询的代码类似于:
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()
为这样的结果设置 class:
public class Result
{
public string x { get; set; }
}