Neo4J从url获取id关系

时间:2014-10-07 15:58:45

标签: neo4j relationship

在Neo4j中,我返回一个节点列表,从中循环 - 我读取它们的ID,对于所有这些节点,我正在使用它读取它们的关系(在本例中我使用的是node_id = 3071):

http://localhost:7474/db/data/node/3071/relationships/out

JSON输出(对于指定的id值)如下:

[{'end': 'http://localhost:7474/db/data/node/3070',
'extensions': {},
'self': 'http://localhost:7474/db/data/relationship/11101',
'property': 'http://localhost:7474/db/data/relationship/11101/properties/{key}',
'type': 'IS', 'properties': 'http://localhost:7474/db/data/relationship/11101/properties',
'data': {},
'start': 'http://localhost:7474/db/data/node/3071'}]

我们观察到我们的节点3071连接到3070.然而,结果是混淆的 形式而不是简单的形式。如何在不使用正则表达式的情况下获得3070(连接节点的ID)?

1 个答案:

答案 0 :(得分:1)

我认为答案是你没有。

您的特定REST查询是在寻求关系。节点ID是节点的属性,在请求关系时,您不会期望提供该节点。

If you ask for the node然后服务器响应的JSON将包括:

"metadata" : {
   "id" : 4147,
   "labels" : [ "Person" ]
}

但这仅适用于获取有关节点的信息。

你可能也在使用旧版本。在同一个REST调用的current documentation中,您希望看到此元数据对象具有该关系的ID,但它不包含在您的服务器的示例响应中。

考虑使用REST API来抓取startend所描述的网址,然后您将获得包含metadata id属性的JSON - 这是你的答案,没有正则表达式。

编辑:正如Michael Hunger所建议的那样 - 如果你愿意放弃JSON,你可以通过运行一个简单的密码查询得到你想要的东西:

MATCH (n)-->(other) WHERE id(n) in {ids} RETURN id(other),other

other参数指定为{"ids":[3071, 3072, 3073]}。但与其他解决方案(单独获取节点)一样,它需要额外的呼叫;您无法从事件关系查询的响应中获取信息。