Pierre
Pierre

Reputation: 943

Cypher query JSON formatted result

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}"  } ], ... ]}

Upvotes: 10

Views: 10431

Answers (1)

Michael Hunger
Michael Hunger

Reputation: 41676

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

Upvotes: 26

Related Questions