我想返回给定的节点ID相关节点及其关系道具
例如: ->
定义了与属性时间戳的双向关系
1234->777
777->1234
1234->999
999->1234
1234->888
888->1234
1234,777,888,999是node-id
当我执行这个:
final PreparedStatement ps = conn.prepareStatement("start a = node(1234) match (a)-[k:nearby*]->(b) where a<>b return DISTINCT b, k");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Map result = (Map<String, Object>) rs.getObject("b");
System.out.println(result.toString());
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error returning userId=" + userIdInput, e);
}
return null;
}
我明白了:
{userId=777}
{userId=999}
{userId=888}
{userId=888}
{userId=999}
{userId=999}
{userId=777}
{userId=888}
{userId=888}
{userId=777}
{userId=888}
{userId=777}
{userId=999}
{userId=999}
{userId=777}
-
我如何才能得到明显的结果(777,888,999)
-
如何检索1234的关系道具到dest节点?我期望获得在每个关系上定义的 timestamp 道具
雷,谢谢你 .
2 回答
我'm not sure what language you'正在使用,所以我将专注于Cypher . 首先,我将
START
替换为MATCH
,WHERE
在ID(a)
上:其次我需要
a<>b
因为Cypher路径不会在同一节点上循环:最后,对于您的问题,我怀疑您获得重复的原因是因为您有多种关系 . 如果是这样,您可以返回结果节点和关系数组,如下所示:
这应该返回节点/关系对象(两者都有属性) . 根据您的语言/库,您可能会获得 Map ,或者您可能会获得包装数据的对象
如果您的库没有为您返回关系的开始/结束节点,您可以执行以下操作:
希望这有帮助!
你得到非截然不同的结果,因为你同时返回
b
和k
如果您只是想要明确
b
的使用:你还应该使用参数!