结果格式
查询 API 可以以两种格式返回查询数据:纯 JSON 或带有类型信息的 Neo4j 扩展 JSON。
纯 JSON
JSON 格式是默认格式。它返回纯 JSON,查询结果嵌入在 data
对象中。要请求此格式,请在请求标题中设置 Accept: application/json
(或完全省略它,因为如果没有提供 Accept
标题,它就是默认值)。
{
"data": {
"fields": [ field1, field2, ... ], (1)
"values": [ entity1, entity2, ... ] (2)
}
}
1 | 查询字段,即返回对象的键 |
2 | 查询结果(每个元素的内部结构取决于对象类型) |
示例请求
POST http://localhost:7474/db/neo4j/query/v2
Authorization: Basic bmVvNGo6dmVyeXNlY3JldA==
Content-Type: application/json
{
"statement": "MERGE (p:Person {name: $name}) RETURN p AS person, p.name AS name",
"parameters": {
"name": "Phil"
}
}
示例响应
202: Accepted
Content-Type: application/json
{
"data": {
"fields": [
"person",
"name"
],
"values": [
{
"elementId": "4:ff04df25-ff2b-4b55-98f8-6888297b025e:2",
"labels": [
"Person"
],
"properties": {
"name": "Phil"
}
},
"Phil"
]
},
"bookmarks": [
"FB:kcwQ/wTfJf8rS1WY+GiIKXsCXg6Q"
]
}
类型映射
Cypher 类型 映射到最接近的 JSON 类型,复杂类型(时间、空间、二进制)序列化为字符串。
Cypher 类型 | 查询 API 类型 | 示例 | ||
---|---|---|---|---|
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
带类型信息的 JSON
纯 JSON 不提供有关返回值的类型信息。例如,以下两个请求的结果完全相同,即使在第一个案例中返回值是 Cypher STRING
,而在第二个案例中它是 ZONED DATETIME
。
{
"statement": "RETURN '2024-01-01T21:40:32-01:00'"
}
{
"statement": "RETURN datetime('2024-01-01T21:40:32-01:00')"
}
如果您关心每个返回值的类型,可以使用 Neo4j 的带有类型信息的扩展 JSON 格式。要在这种格式下接收结果,请在请求标题中设置 Accept: application/vnd.neo4j.query
。
在这种格式中,每个返回值都是一个对象,其中类型和值信息存储为单独的键
OffsetDateTime
值{
"$type":"OffsetDateTime",
"_value":"2024-01-01T21:40:32-01:00"
}
如果您希望使用这种格式提交参数,请在请求标题中设置 Content-Type: application/vnd.neo4j.query
。
示例请求
POST http://localhost:7474/db/neo4j/query/v2
Authorization: Basic bmVvNGo6dmVyeXNlY3JldA==
Accept: application/vnd.neo4j.query
Content-Type: application/vnd.neo4j.query
{
"statement": "MERGE (p:Person {name: $name}) RETURN p AS person, p.name AS name",
"parameters": {
"name": {
"$type": "String",
"_value": "Phil"
}
}
}
示例响应
202: Accepted
Content-Type: application/json
{
"data": {
"fields": [
"person",
"name"
],
"values": [
{
"$type": "Node",
"_value": {
"_element_id": "4:ff04df25-ff2b-4b55-98f8-6888297b025e:2",
"_labels": [
"Person"
],
"_properties": {
"name": {
"$type": "String",
"_value": "Phil"
}
}
}
},
{
"$type": "String",
"_value": "Phil"
}
]
},
"bookmarks": [
"FB:kcwQ/wTfJf8rS1WY+GiIKXsCXg6Q"
]
}
类型映射
本节详细说明了 Cypher 类型 在查询 API 中的标记方式。
Cypher 类型 | 查询 API 类型 | 示例 | ||
---|---|---|---|---|
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|