【问题标题】:How to return relationship type with Neo4J's Cypher queries?如何使用 Neo4J 的 Cypher 查询返回关系类型?
【发布时间】:2015-10-07 18:19:58
【问题描述】:

我正在尝试获取一个非常简单的 Cypher 查询的关系类型,如下所示

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

不幸的是,这会为r 返回一个空对象。这很麻烦,因为我无法区分不同类型的关系。我可以通过添加像[r:KNOWS {type:'KNOWS'}] 这样的属性来修补这个问题,但我想知道是否没有直接的方法来获取关系类型。

我什至关注了官方Neo4J tutorial(如下所述),证明了问题。

图表设置

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

【问题讨论】:

标签: neo4j cypher


【解决方案1】:

添加了不同的。

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

【讨论】:

    【解决方案2】:

    使用type() 函数。

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

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多