是否有任何Cypher Query可以返回节点的所有属性,但不包括特定属性?

时间:2019-07-29 19:28:42

标签: neo4j cypher neo4j-apoc

Neo4j中检索特定节点的所有属性对于许多查询来说是一种习惯。但是,如何检索不包含特定属性,标签和ID的节点的属性?

如果成功连接后,以下查询由Java程序执行:

MATCH (n: `Group_A`: `Topper`) RETURN n

现在,然后它在屏幕上打印的输出为:

{"id":4, "labels":["Group_A", "Topper"], "name":"tom", "shift":"morning", "salary":"5000", "blood_group":"AB", "specialisation":"C#"}

我期望节点的所有属性(n:Group_ATopper),不包括属性类型及其值,id和与该节点关联的标签。 因此,屏幕上所需的输出将如下所示:

{"name":"tom", "shift":"morning", "blood_group":"AB", "specialisation":"C#"}

================================================ ======================== [注: -我正在使用Neo4j jar文件,在其中触发Neo4j的查询并使用println()方法获取结果。我的Neo4j在后​​台运行。一切顺利完成Neo4j的工作,但我在搜索Neo4j查询。]

2 个答案:

答案 0 :(得分:0)

[已更新]

为避免获取节点元数据(在客户端结果中),请勿直接返回节点。相反,您可以使用PROPERTIES()函数仅获取地图中的属性:

MATCH (n: `Group_A`: `Topper`)
RETURN PROPERTIES(n) AS props

但是,如果您也希望避免返回某些属性(例如“工资”),则可以使用apoc.map.removeKey()函数将其删除。由于该函数返回的是地图而不是节点,因此它也将不包含任何元数据(因此,在这种情况下,您无需使用PROPERTIES()函数)。例如:

MATCH (n: `Group_A`: `Topper`)
RETURN apoc.map.removeKey(n, 'salary') AS props

答案 1 :(得分:0)

您可以使用地图投影。

所有节点属性(无元数据)

 PASS  stackoverflow/62736904/utilsModule.test.js (11.51s)
  62736904
    ✓ testing function (3ms)

----------------|---------|----------|---------|---------|-------------------
File            | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------------|---------|----------|---------|---------|-------------------
All files       |      75 |      100 |   33.33 |      75 |                   
 utilsModule.js |      75 |      100 |   33.33 |      75 | 6-7               
----------------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        12.892s

特定属性

MATCH (n: `Group_A`: `Topper`)
RETURN n {.*}