Search code examples
neo4jneo4jclient

Storing object as property in Neo4j


I need to store an array of User objects inside a Tile node. Each User object contains three primitive properties; Id(a single alpha-character string) , fName and lName. This list of objects is a property of the Tile node with several other primitive properties. The entire Tile node needs to be serialized to Json, including the nested User objects.

I understand that Neo can't store complex objects as properties. I created the User as a separate node with id, fName and lName as properties, and I can get these returned via Cypher. I can also get Json output results for the parent Tile node. (In this case, Users is just a string of comma-separated alphas). But how do I get the User node output nested inside the parent node?

I have created a list of User objects (userList) by relating user objects with the string of user ids in the Tile Node via a Cypher Query. I just need to get from two separate json outputs to a single nested output.

I hope this is enough detail. I'm using Neo4j 2.1.6 and Neo4jClient. I'm also using .Net 4.0.


Solution

  • You could do something like this with cypher and have the cypher return a composite object.

    MATCH (t:Tile)-[:CONTAINS_USER]-(u:User)
    WHERE t.name =~ 'Tile.*'
    WITH {name: t.name, users: collect(u) } AS tile
    RETURN collect(tile) AS tiles