Search code examples
neo4jneo4j-shell

Is there a way to list *only* Node properties in Neo4j Shell?


For example, if I have a Node with 2 properties, but over 100 Relationships:

neo4j-sh (andrew,45982528)$ ls
*last_updated_millis =[1476768446691]
*name                =[andrew]
(me)<-[:REL]-(632456453)
(me)<-[:REL]-(478046914)
(me)<-[:REL]-(100979884)
(me)<-[:REL]-(629523704)
// ..... *snip* .....
(me)<-[:REL]-(320864107)
(me)<-[:REL]-(398667824)
(me)<-[:REL]-(611628243)
neo4j-sh (andrew,45982528)$

Is there a command or option I can apply to ls to only list the Properties?


Solution

  • There's an inline help in neo4j-shell:

    neo4j-sh (?)$ help ls
    
    Lists the contents of the current node or relationship. Optionally supply
    node id for listing a certain node using "ls <node-id>".
    
      -a     Allows for cd:ing to a node not connected to the current node (e.g. 'absolute').
      -b     Brief summary instead of full content.
      -f     Filters property keys/values and relationship types. Supplied either as a single
         value or as a JSON string where both keys and values can contain regex.
         Starting/ending {} brackets are optional. Examples:
           "username"
            property/relationship 'username' gets listed
           ".*name:ma.*, age:''"
            properties with keys matching '.*name' and values matching 'ma.*' gets listed,
            as well as the 'age' property. Also relationships matching '.*name' or 'age'
            gets listed
           "KNOWS:out,LOVES:in"
            outgoing KNOWS and incoming LOVES relationships gets listed.
      -i     Filters are case-insensitive (case-sensitive by default).
      -l     Filters matches more loosely, i.e. it's considered a match if just a part of a
         value matches the pattern, not necessarily the whole value.
      -m     Display a maximum of M relationships per type (default 10 if no value given).
      -p     Lists properties.
      -q     Quiet mode.
      -r     Lists relationships.
      -s     Sorts relationships by type.
      -v     Verbose mode.
    

    You can use ls -p.

    Alternatively, you can return the node from a Cypher query:

    MATCH (n) WHERE id(n) = 45982528 RETURN n;
    

    which will display the id as well as the properties, probably like this:

    +-------------------------------------------------------------------+
    | n                                                                 |
    +-------------------------------------------------------------------+
    | Node[45982528]{name:"andrew", last_updated_millis: 1476768446691} |
    +-------------------------------------------------------------------+
    1 row
    8 ms