Neo4j Cypher:return 个节点,id 作为字典

Neo4j Cypher : return nodes with id as a dictionary

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

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"
    }
  }
]

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

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