如示例图所示,查询返回的结构是表格(行-列)式的,列值主要分为两种,要么是节点的属性列表,以JSON结构显示,要么是标量值。
驱动程序的Session返回查询的结果,Keys字段是Cypher语句中return子句投影的字段列表;Values字段返回是查询结果
public void MatchNodes(string lable, string name) { string query = string.Format(@“MATCH (n:{0} “, lable)+ @”{name: $name})-[r]->(m) RETURN n,id(n);”; using (var session = Driver.Session(AccessMode.Read)) { var result = session.ReadTransaction(rx => rx.Run(query, new { name })); //return 子句投影的字段列表 IReadOnlyList<string> keys = result.Keys; //查询返回的数据行 var rows = result.ToList(); foreach(var row in rows) { //每个数据行都包含多个数据列 var columns = row.Values; foreach (var column in columns) { //每个数据列,可能是一个节点,也可能是一个标量值 if(column.Key==“n”) { var node = column.Value as INode;
long NodeID = node.Id;
string NodeLables = string.Join(",", node.Labels.ToArray());
foreach (var property in node.Properties)
{
string Property=string.Format("Property[Key:{0},Value:{1}", property.Key, property.Value);
}
}
if(column.Key=="id(n)")
{
long NodeID=long.Parse(column.Value.ToString());
}
}
}
}
}
这里的string query = string.Format(@“MATCH (n:{0} “, lable)+ @”{name: $name})-[r]->(m) RETURN n,id(n);”; 不是很懂