Skip to main content

Working with Neo4J REST API



I have several questions?





How can i query the node by its property? I see only to query by node id.





And how can I get, for example all friends and unconfirmed friends of the node? At the moment I can do that only by querying the all relationships of the node, and iterate over it by checking the property of each relationship.





My idea as the following: a node has parameter - id (userID), relationship has properties - directions - FROM_ME or TO_ME, status - CONFIRMED, UNCONFIRMED. All the quries are performed in REST API in Java.





How can I do that in the simple way like in SQL, f.e., SELECT friends WHERE friend_id = 1?





References to some tutorials with the solutions and techniques of such questions qould be appreciated


Comments

  1. To answer your first question, you can use indexes to quickly find nodes by a property on the node. Docs for REST here: http://docs.neo4j.org/chunked/milestone/rest-api-indexes.html

    For the second question, Cypher query language makes it easy to perform these types of queries. Here is an example that gets all users that are connected to a given user via a FRIEND relationship where the "status" property of the relationship is "confirmed":

    START user=node(123)
    MATCH user-[r:FRIEND]-friend
    WHERE r.status="confirmed"
    RETURN friend


    You can also add constraints on the direction of the relationship and chain multiple relationships together in a path to find friends-of-friends, etc.

    Here are the Cypher docs: http://docs.neo4j.org/chunked/milestone/cypher-query-lang.html

    Here are the docs on making Cypher queries via the REST API: http://docs.neo4j.org/chunked/milestone/rest-api-cypher.html

    ReplyDelete

Post a Comment

Popular posts from this blog

Wildcards in a hosts file

I want to setup my local development machine so that any requests for *.local are redirected to localhost . The idea is that as I develop multiple sites, I can just add vhosts to Apache called site1.local , site2.local etc, and have them all resolve to localhost , while Apache serves a different site accordingly.