web-dev-qa-db-fra.com

Comment retourner le type de relation avec les requêtes Cypher de Neo4J?

J'essaie d'obtenir le type de relation d'une requête Cypher très simple, comme le suivant

MATCH (n)-[r]-(m) RETURN n, r, m;

Malheureusement, cela retourne un objet vide pour r. C'est gênant car je ne peux pas distinguer les différents types de relations. Je peux corriger cela en ajoutant une propriété comme [r:KNOWS {type:'KNOWS'}] mais je me demande s'il n'y a pas de moyen direct d'obtenir le type de relation.

J'ai même suivi l'officiel tutoriel Neo4J (comme décrit ci-dessous), démontrant le problème.

Configuration du graphique :

create (_0 {`age`:55, `happy`:"Yes!", `name`:"A"})
create (_1 {`name`:"B"})
create _0-[:`KNOWS`]->_1
create _0-[:`BLOCKS`]->_1

Requête :

MATCH p=(a { name: "A" })-[r]->(b)
RETURN *

CORPS DE RÉPONSE JSON :

{
    "results": [
        {
            "columns": [
                "a",
                "b",
                "p",
                "r"
            ],
            "data": [
                {
                    "row": [
                        {
                            "name": "A",
                            "age": 55,
                            "happy": "Yes!"
                        },
                        {
                            "name": "B"
                        },
                        [
                            {
                                "name": "A",
                                "age": 55,
                                "happy": "Yes!"
                            },
                            {},
                            {
                                "name": "B"
                            }
                        ],
                        {}
                    ]
                },
                {
                    "row": [
                        {
                            "name": "A",
                            "age": 55,
                            "happy": "Yes!"
                        },
                        {
                            "name": "B"
                        },
                        [
                            {
                                "name": "A",
                                "age": 55,
                                "happy": "Yes!"
                            },
                            {},
                            {
                                "name": "B"
                            }
                        ],
                        {}
                    ]
                }
            ]
        }
    ],
    "errors": []
}

Comme vous pouvez le voir, j'obtiens un objet vide pour r, ce qui rend impossible la distinction entre les relations.

[~ # ~] note [~ # ~] : J'utilise Neo4J v.2.2.2

21
F Lekschas

Utilisez la fonction type().

MATCH (n)-[r]-(m) RETURN type(r);
37
FrobberOfBits