2015-07-21 108 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