使用 Cypher,如何返回仅包含其属性子集的节点

tcf*_*man 3 neo4j graph-databases cypher

假设我在 Neo4j 中创建了一个节点:

CREATE (:Thing {a:'foo', b:'bar'})
Run Code Online (Sandbox Code Playgroud)

我可以编写一个查询来获取该节点及其所有属性

MATCH (n:Thing {a:'foo'}) RETURN n
Run Code Online (Sandbox Code Playgroud)

返回

{
  "a": "foo",
  "b": "bar"
}
Run Code Online (Sandbox Code Playgroud)

但是是否有可能匹配一个节点并仅检索其属性的子集,例如,Neo4j 将返回一个仅具有

{
  "b": "bar"
}
Run Code Online (Sandbox Code Playgroud)

(不只是寻找财产,就像您通过 获得的那样RETURN n.b

Chr*_*sen 5

是的,您可以在 Cypher 中使用地图投影,例如:

MATCH (n:Thing {a:'foo'}) RETURN n{.a}
Run Code Online (Sandbox Code Playgroud)

将返回 :

 {a:"foo"}
Run Code Online (Sandbox Code Playgroud)

文档中的更多信息

  • 这似乎没有回答这个问题(我也有),因为这似乎也没有返回节点对象或子图。例如,“MATCH (n)<-[r:REL]-(m) RETURN r, m{.prop1}”应返回具有该关系的所有节点的子图,但这些节点仅具有“prop1”属性。这仅返回每个节点的单个属性,但不保留图形结构。 (4认同)