Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cypher query JSON formatted result

Tags:

json

neo4j

cypher

On the Actor/Movie demo graph, cypher returns column names in a separate array.

MATCH (n:Person) RETURN n.name as Name, n.born as Born ORDER BY n.born LIMIT 5

results:

{  "columns" : [ "Name", "Born" ],  "data" : [ [ "Max von Sydow", 1929 ], [ "Gene Hackman", 1930 ], [ "Richard Harris", 1930 ], [ "Clint Eastwood", 1930 ], [ "Mike Nichols", 1931 ] ]}

Is it possible to get each node properties tagged instead?

{ "nodes" : [ ["Name": "Max von Sydow", "Born": 1929 ], ...] }

If I return the node instead of selected properties, I get way too many properties.

MATCH (n:Person) RETURN n LIMIT 5

results:

{  "columns" : [ "n" ],  "data" : [ [ {    "outgoing_relationships" : "http://localhost:7474/db/data/node/58/relationships/out",    "labels" : "http://localhost:7474/db/data/node/58/labels",    "data" : {      "born" : 1929,      "name" : "Max von Sydow"    },    "all_typed_relationships" : "http://localhost:7474/db/data/node/58/relationships/all/{-list|&|types}",    "traverse" : "http://localhost:7474/db/data/node/58/traverse/{returnType}",    "self" : "http://localhost:7474/db/data/node/58",    "property" : "http://localhost:7474/db/data/node/58/properties/{key}",    "outgoing_typed_relationships" : "http://localhost:7474/db/data/node/58/relationships/out/{-list|&|types}",    "properties" : "http://localhost:7474/db/data/node/58/properties",    "incoming_relationships" : "http://localhost:7474/db/data/node/58/relationships/in",    "extensions" : {    },    "create_relationship" : "http://localhost:7474/db/data/node/58/relationships",    "paged_traverse" : "http://localhost:7474/db/data/node/58/paged/traverse/{returnType}{?pageSize,leaseTime}",    "all_relationships" : "http://localhost:7474/db/data/node/58/relationships/all",    "incoming_typed_relationships" : "http://localhost:7474/db/data/node/58/relationships/in/{-list|&|types}"  } ], ... ]}
like image 727
Pierre Avatar asked Jan 19 '14 17:01

Pierre


1 Answers

You can use the new literal map syntax in Neo4j 2.0 and do something like:

MATCH (n:Person) 
RETURN { Name: n.name , Born: n.born } as Person 
ORDER BY n.born 
LIMIT 5
like image 99
Michael Hunger Avatar answered Oct 16 '22 01:10

Michael Hunger