web-dev-qa-db-ja.com

Neo4JのCypherクエリで関係タイプを返す方法は?

次のような非常に単純なCypherクエリの関係タイプを取得しようとしています

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

残念ながら、これはrの空のオブジェクトを返します。異なるタイプの関係を区別できないので、これは面倒です。 [r:KNOWS {type:'KNOWS'}]のようなプロパティを追加することで、これにモンキーパッチを当てることができますが、関係タイプを取得する直接的な方法がないのではないかと思っています。

私は公式 Neo4Jチュートリアル (以下で説明)にも従い、問題を実証しました。

グラフ設定

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

クエリ

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

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": []
}

ご覧のとおり、rの空のオブジェクトを取得しているため、関係を区別することができません。

[〜#〜]ノート[〜#〜]:Neo4J v.2.2.2を実行しています

21
F Lekschas

type()関数を使用します。

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