apoc.nodes.relationship.types

Details

Syntax

apoc.nodes.relationship.types(nodes [, types ])

Description

Returns a LIST<STRING> of distinct RELATIONSHIP types from the given LIST<NODE> values.

Arguments

Name

Type

Description

nodes

ANY

Nodes to return connected relationship types from.

types

STRING

If not empty, provides an allow list of relationship types to be returned. Relationship types are represented using APOC’s rel-direction-pattern syntax; [<]RELATIONSHIP_TYPE1[>]|[<]RELATIONSHIP_TYPE2[>]|…​. The default is: ``.

Returns

LIST<ANY>

Output parameters

Name Type Description

value

LIST<MAP>

A LIST<MAP> containing MAP values with the keys; "node" → NODE and "types" → LIST<STRING> containing STRING values of each type.

Usage Examples

The examples in this section are based on the following sample graph:

MERGE (michael:Person {name: "Michael"})
WITH michael
CALL {
    WITH michael
    UNWIND range(0, 100) AS id
    MERGE (p:Person {name: "Person" + id})
    MERGE (michael)-[:KNOWS]-(p)
    RETURN count(*) AS friends
}

CALL {
    WITH michael
    UNWIND range(0, 50) AS id
    MERGE (p:Person {name: "Person" + id})
    MERGE (michael)-[:FOLLOWS]-(p)
    RETURN count(*) AS follows
}

RETURN friends, follows;
Results
friends follows

101

51

MATCH (p1:Person)
WHERE p1.name IN ["Michael", "Person30", "Person60"]
WITH collect(p1) AS people
UNWIND apoc.nodes.relationship.types(people, "KNOWS>|FOLLOWS") AS output
RETURN output;
Results
output

{node: (:Person {name: "Michael"}), types: ["KNOWS", "FOLLOWS"]}

{node: (:Person {name: "Person30"}), types: ["FOLLOWS"]}

{node: (:Person {name: "Person60"}), types: []}