【问题标题】:How to return all properties of a node with distinct on one property using Cypher如何使用 Cypher 返回具有不同属性的节点的所有属性
【发布时间】:2018-05-09 07:53:19
【问题描述】:

我是 cypher 新手,我想在使用 'DISTINCT' 后获取数据,但我只能获取 'DISTINCT' 属性的值,例如:

CREATE (n:person {name: "a", age: 22})
CREATE (n:person {name: "a", age: 23})
CREATE (n:person {name: "a", age: 24})

我只想得到一个名为“a”的标签为“person”的节点,所以我尝试这样的查询

MATCH (n:person) RETURN DISTINCT n.name

这个只返回“a”,但是我想要节点的所有属性和值,也就是{name:“a”,age:22},怎么办?

【问题讨论】:

  • 我不明白你想要什么结果。能给我举个例子吗 ?因为您似乎想要distinct,但也想要所有值...
  • @logisima 以我的问题中的代码为例,我创建了三个同名但年龄不同的人。我想获取具有不同名称的人员信息,例如人员 {name: "a", age:22},并且我不希望结果包含另外两个人。我希望它更清楚......
  • 好的,我理解名称的不同之处,但为什么你想要节点年龄 22 而不是 2324 ?是因为它是第一个,较低的,其他的吗?
  • @logisima 实际上,年龄无关紧要。我的真实数据是一些保险案例,比如有一个案例包含2个人,所以有两条caseId相同的记录,{caseId: 1, name:"a", time: "19:57"}, {caseId :1,名称:“b”,时间:“19:57”}。我不需要“name”属性,但我想要“caseId”和“time”。我希望我说清楚...

标签: neo4j cypher


【解决方案1】:

你可以试试这个查询:

MATCH (n:person) 
WITH n.name, collect(n) AS persons
RETURN persons[0]

collect 是一个聚合函数,所以在其中你将拥有由n.name 聚合的所有节点,我返回第一个元素。

【讨论】:

  • 对我有一定的帮助,非常感谢您的耐心解答!
【解决方案2】:

要获得一个带有name“a”的person节点:

MATCH (n:person {name: "a"})
RETURN n
LIMIT 1;

【讨论】:

    猜你喜欢
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多