2017-11-06 8 views
0

SomeNode 및 OtherNodes의 모든 속성과 ID를 가져 오려고합니다.속성 (n)을 사용하는 cypher 요청과 함께 노드 ID를 가져 오는 방법은 무엇입니까?

나는이 쿼리가 :

const neo = driver.session(); 
const responseObj = { error: false, message: 'success: getting nodes' }; 

const q = 'MATCH (n:SomeNode)-[:has]->(o:OtherNode), ' + 
' RETURN properties(n) AS node, properties(o) AS otherNode'; 

neo.run(q) 
.then((result) => { 
    const records = result.records; 
    const nodes = []; 

    records.forEach((record) => { 
    nodes.push({ 
     node: record.get('node'), 
     other: record.get('otherNode') 
    }); 
    }); 

    responseObj.nodes = nodes; 
    neo.close(); 
    respond(null, responseObj); 
}); 

이 예상대로 SomeNode의 속성과 OtherNode의 특성을 가진 객체의 배열을 날 다시 제공을하지만, 나는 또한 SomeNode 및 OtherNode의 id의 필요합니다. 가장 좋은 방법은 무엇입니까?

노드가 반환되면 ID를 가져 오는 방법은 무엇입니까?

당신은 예를 들어, 속성과 함께 ID를 반환하는지도 투영을 사용할 수

enter image description here

답변

1

map projection을 사용하여 노드의 속성을 가져오고 추가 맵 속성을 추가하는 등 사용자 정의 할 수 있습니다. 기본적으로 ID를 포함해야한다 직접 no를 반환 비록

MATCH (n:SomeNode)-[:has]->(o:OtherNode) 
RETURN n {.*, _id:id(n)} AS node, o {.*, _id:id(o)} AS otherNode 

.

+0

노드를 반환 할 때 ID를 얻는 올바른 방법은 무엇입니까? – cmac

+0

node.properties.id ...가 표시되지 않습니까? – cmac

+0

출력을 소비하는 방법에 따라 다릅니다. 브라우저에서 결과의 코드보기 탭을 보면 반환 된 데이터에 ID가 표시되어야합니다. neo4j 드라이버를 통해 결과에 액세스하는 경우 반환 된 노드 결과의 식별자에 유사하게 액세스 할 수 있어야합니다 (해당 노드가 아닌 '속성'과 동일한 수준). – InverseFalcon

1

:

MATCH (n:Company) RETURN {properties: properties(n), id:id(n)} 

-

{"properties":{"desc":"Programmable 4thgeneration array", 
"name":"Homenick-Feeney"},"id":"2111"} 

그런데, 왜 그냥 노드를 반환하지 그 자체로, 당신이 가지고있는 유일한 정보는 그것의 레이블입니까?

+0

나는 속성을 사용하는 것을 좋아한다. (n) 그저 속성을 되돌려 주며 node.properties.prop를 할 필요가 없다. 노드를 얻는다면 노드를 얻는 올바른 방법은 무엇인가? – cmac

+0

node.properties.id가 보이지 않습니다 ....? – cmac

+0

개체의 디버그를 덤프 할 수 있습니까? –