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