2015-07-21 70 views
0

我有了这个超级简单的暗号查询两个节点的我的多汁的图形数据库:的Neo4j /暗号:返回的id属性

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以外的对象,我不想这样。

+1

在Neo4j中的Id不可靠。他们可能会及时改变。最好使用自己的属性作为节点标识符或使用GraphAware UUID插件 - https://github.com/graphaware/neo4j-uuid – MicTech

+0

感谢您指出这一点。 – swelet

回答

2

您可以使用地图{foobar:42}和收集结构的Cypher [1,2,3]

这样你就可以返回:

RETURN {id:id(n), labels: labels(n), data: n} 

,或者您可以使用

{"statement":"match (n) return n","resultDataContents":["graph"]} 

额外的参数,以此来POST请求。

+0

我宁愿寻找RETURN {id:id(n),name:n.name,description:n.description},但这帮助我理解了return语句的工作原理。 (作为其他搜索者的一个附注:我原本想在我正在构建的应用程序中使用该ID作为唯一标识符,但正如MicTech在他上面的评论中指出的那样,这不是好事。例如,Neo4j可能会重用ID节点被删除,显然最好生成自己的唯一ID:s)。 – swelet