2015-07-17 14 views
11

sto cercando di ottenere il tipo di relazione di una semplice query Cypher, come il seguenteCome restituire il tipo di relazione con le query di Cypher di Neo4J?

MATCH (n)-[r]-(m) RETURN n, r, m; 

Purtroppo questo restituire un oggetto vuoto per r. Questo è fastidioso poiché non riesco a distinguere tra i diversi tipi di relazioni. Posso scovare la patch aggiungendo una proprietà come [r:KNOWS {type:'KNOWS'}] ma mi chiedo se non ci sia un modo diretto per ottenere il tipo di relazione.

Ho persino seguito lo Neo4J tutorial ufficiale (come descritto di seguito), dimostrando il problema.

Grafico Setup:

create (_0 {`age`:55, `happy`:"Yes!", `name`:"A"}) 
create (_1 {`name`:"B"}) 
create _0-[:`KNOWS`]->_1 
create _0-[:`BLOCKS`]->_1 

Query:

MATCH p=(a { name: "A" })-[r]->(b) 
RETURN * 

JSON risposta del corpo:

{ 
    "results": [ 
     { 
      "columns": [ 
       "a", 
       "b", 
       "p", 
       "r" 
      ], 
      "data": [ 
       { 
        "row": [ 
         { 
          "name": "A", 
          "age": 55, 
          "happy": "Yes!" 
         }, 
         { 
          "name": "B" 
         }, 
         [ 
          { 
           "name": "A", 
           "age": 55, 
           "happy": "Yes!" 
          }, 
          {}, 
          { 
           "name": "B" 
          } 
         ], 
         {} 
        ] 
       }, 
       { 
        "row": [ 
         { 
          "name": "A", 
          "age": 55, 
          "happy": "Yes!" 
         }, 
         { 
          "name": "B" 
         }, 
         [ 
          { 
           "name": "A", 
           "age": 55, 
           "happy": "Yes!" 
          }, 
          {}, 
          { 
           "name": "B" 
          } 
         ], 
         {} 
        ] 
       } 
      ] 
     } 
    ], 
    "errors": [] 
} 

Come si ca n vedo, ottengo un oggetto vuoto per r, che rende impossibile distinguere tra le relazioni.

NOTA: Sono in esecuzione Neo4j v.2.2.2

+3

È solo 'TYPE (r)' dove 'r' è l'identificatore della relazione. Dai un'occhiata qui: http://neo4j.com/docs/stable/query-functions-scalar.html#functions-type –

+0

Great! È stato facile. Mi chiedo perché non ho trovato quella pagina. –

+2

Non è esattamente descritto. :) In futuro, mantieni la refcard Cypher a portata di mano in quanto ti mostrerà cose del genere. http://neo4j.com/docs/stable/cypher-refcard/ –

risposta

17

Utilizzare la funzione type().

MATCH (n)-[r]-(m) RETURN type(r); 
Problemi correlati