首页 > 解决方案 > Neo4j Cypher:返回具有 id 作为字典的节点

问题描述

我有具有这些属性的节点:

MATCH (n:A) RETURN n
[
  {
    "name": "114s09A.1",
    "_id": "114s09A.1",
    "id": "114s09A.1",
    "created_n4j": "2020-12-21T09:56:11.256000000Z",
    "type": "A",
    "updated_n4j": "2020-12-21T09:56:11.256000000Z"
  },
  {
    "name": "114s09A.2",
    "_id": "114s09A.2",
    "id": "114s09A.2",
    "created_n4j": "2020-12-21T09:56:11.257000000Z",
    "type": "A",
    "updated_n4j": "2020-12-21T09:56:11.257000000Z"
  }
]

有没有办法构建密码查询,以便将结果塑造成字典,其中id的关键是?

[
  {
    "114s09A.1": {
      "name": "114s09A.1",
      "id": "114s09A.1",
      "created_n4j": "2020-12-21T09:56:11.256000000Z",
      "type": "A",
      "updated_n4j": "2020-12-21T09:56:11.256000000Z"
    }
  },
  {
    "114s09A.2": {
      "name": "114s09A.2",
      "id": "114s09A.2",
      "created_n4j": "2020-12-21T09:56:11.257000000Z",
      "type": "A",
      "updated_n4j": "2020-12-21T09:56:11.257000000Z"
    }
  }
]

到目前为止,我最接近的是:

MATCH (n:A) RETURN n._id AS _id, properties(n) AS properties
[
  {
    "_id":"114s09A.1",
    "properties":{
      "name": "114s09A.1",
      "id": "114s09A.1",
      "created_n4j": "2020-12-21T09:56:11.256000000Z",
      "type": "A",
      "updated_n4j": "2020-12-21T09:56:11.256000000Z"
    }
  },
  {
    "_id":"114s09A.2",
    "properties":{
      "name": "114s09A.2",
      "id": "114s09A.2",
      "created_n4j": "2020-12-21T09:56:11.257000000Z",
      "type": "A",
      "updated_n4j": "2020-12-21T09:56:11.257000000Z"
    }
  }
]

标签: neo4jcypher

解决方案


使用默认的 Cypher 语法是不可能的,但是如果你安装了 apoc 库,你可以这样做:

MATCH (n:A)
RETURN apoc.map.setKey({}, n.id, n{.*})

推荐阅读