在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)?
我认为答案是你没有。
您在这里的特定REST查询是在请求关系。节点ID是节点的属性,在请求关系时您不会期望提供该属性。
如果您请求节点,那么服务器响应的JSON将包括以下内容:
"metadata" : {
"id" : 4147,
"labels" : [ "Person" ]
}
但这仅适用于获取有关节点的信息。
不过,您可能也在使用旧版本。在同一REST调用的当前文档中,您希望看到这个元数据对象带有关系的ID,但它没有包含在服务器的示例响应中。
考虑使用REST API获取start
和end
描述的URL,您将获得包含此metadata
和id
属性的JSON-这是您的答案,没有正则表达式。
EDIT:正如下面的Michael Hunger所建议的那样——如果你愿意放弃JSON,你可以通过运行一个简单的密码查询来获得你想要的:
MATCH (n)-->(other) WHERE id(n) in {ids} RETURN id(other),other
将other
参数指定为{"ids":[3071, 3072, 3073]}
。但与其他解决方案(单独获取节点)一样,它需要一个额外的调用;您无法从对偶发事件关系查询的响应中获取信息。