我希望得到像使用Oracle一样的效果。
例如,我有两张表:Student
,Tearcher
。我可以使用SQL获取两个表的所有列名。
现在,我有两个节点:一个带有标签Student
,其中包含名称,年龄,性别,成绩属性,另一个带有标签Teacher
和名称,性别,工资属性。
我可以使用Cypher获取Neo4jClient的所有属性名称吗?
Thx Z.Tom
答案 0 :(得分:2)
您可以使用keys
功能,如果您想通过标签获取属性,则可以使用以下查询进行匹配:
MATCH (a:Student) WITH keys(a) as k UNWIND k as x RETURN DISTINCT x
将返回标记为Student
说明:
Student
的所有节点。keys
提取节点的属性键,然后将它们作为数组传递WITH
UNWIND
捕获数组并将它们拆分为单行RETURN DISTINCT
将属性名称返回为避免重复的行在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()
为这样的结果设置类:
public class Result
{
public string x { get; set; }
}