Neo4j/cypher:返回id作为属性
我有一个超级简单的密码查询,用于我的两个节点的多汁图形数据库:Neo4j/cypher:返回id作为属性,neo4j,cypher,Neo4j,Cypher,我有一个超级简单的密码查询,用于我的两个节点的多汁图形数据库: MATCH (n) RETURN n 它将返回两个节点: { "results": [ { "columns": [ "n" ], "data": [ { "row": [ { "name": "node 1"
MATCH (n) RETURN n
它将返回两个节点:
{
"results": [
{
"columns": [
"n"
],
"data": [
{
"row": [
{
"name": "node 1",
"description": "This is my first node."
}
]
},
{
"row": [
{
"name": "node 2",
"description": "This is my second node."
}
]
}
]
}
],
"errors": []
}
我有点希望将id作为带有“name”和“description”的属性输出。我怎样才能把它放进去?我知道我可以这样做:
MATCH (n) RETURN n, id(n)
但是这会将id放在对象之外,我不希望这样。您可以在Cypher
[1,2,3]
中使用map{foobar:42}
和集合结构
因此,您可以返回:
RETURN {id:id(n), labels: labels(n), data: n}
或者你可以使用
{"statement":"match (n) return n","resultDataContents":["graph"]}
作为POST请求的附加参数。Neo4j中的Id不可靠。他们可以及时改变。最好使用您自己的属性作为节点标识符,或者使用GraphAware UUID插件-我一直在寻找返回{id:id(n),name:n.name,description:n.description},但这有助于我理解RETURN语句的工作原理。(作为对其他搜索者的补充说明:我原本想在我正在构建的应用程序中使用ID作为唯一标识符,但正如MicTech在上面的评论中指出的那样,这并不好。例如,Neo4j可能会在删除节点时重用ID。显然,最好生成自己的唯一ID:s)。