空间类型
|
这是 GraphQL Library 7 版本的文档。对于长期支持 (LTS) 版本 5,请参考 GraphQL Library 5 LTS 版本。 |
空间类型
Neo4j GraphQL 空间类型会转换为使用Point 在数据库中存储的空间值。在 GraphQL 架构中使用这些类型之一会自动引入运行与这些空间类型相关的查询和变更所需的类型。
Point
Point 类型用于描述 Neo4j 支持的两种 地理坐标参考系统。
要在模式中使用它,请在模式中的任意其他类型上添加一个类型为 Point 的字段,如下所示
type TypeWithPoint @node {
location: Point!
}
Point 类型会自动添加到你的模式中,同时还会添加用于通过 API 查询和操作空间类型的输入输出类型。
有关过滤选项,请参见 过滤空间类型。
查询和变更
由于 Point 是对象类型,它在查询和变更中有一个额外的输入类型。不过,这些输入类型与对象类型的结构相同。
input PointInput {
latitude: Float!
longitude: Float!
height: Float
}
input PointFilters {
eq: PointInput
in: [PointInput!]
distance: PointDistanceFilters
}
input PointDistanceFilters {
from: PointInput!
gt: Float
gte: Float
lt: Float
lte: Float
eq: Float
}
例如,你可以查询具有精确位置的 User
query Users($longitude: Float!, $latitude: Float!) {
users(where: { location: { eq: { longitude: $longitude, latitude: $latitude } } }) {
name
location {
longitude
latitude
}
}
}
或者,你可以按如下方式创建带有位置的 User
mutation CreateUsers($name: String!, $longitude: Float!, $latitude: Float!) {
createUsers(input: [{ name: $name, location: { longitude: $longitude, latitude: $latitude } }]) {
users {
name
location {
longitude
latitude
}
}
}
}
CartesianPoint
CartesianPoint 类型用于描述 Neo4j 支持的两种 笛卡尔坐标参考系统。
要在模式中使用它,请在任意类型上添加一个类型为 CartesianPoint 的字段,例如在此示例中
type TypeWithCartesianPoint @node {
location: CartesianPoint!
}
CartesianPoint 类型会自动添加到你的模式中,同时还会添加用于通过 API 查询和操作空间类型的输入输出类型。
有关过滤选项,请参见 过滤空间类型。
查询和变更
由于 CartesianPoint 是对象类型,它在查询和变更中有一个额外的输入类型。不过,该输入类型与对象类型的结构相同。
input CartesianPointInput {
x: Float!
y: Float!
z: Float
}
input CartesianPointFilters {
eq: CartesianPointInput
in: [CartesianPointInput!]
distance: CartesianDistancePointFilters
}
input CartesianDistancePointFilters {
from: CartesianPointInput!
gt: Float
gte: Float
lt: Float
lte: Float
}
例如,你可以查询具有精确位置的 User
query Users($x: Float!, $y: Float!, $z: Float!) {
users(where: { location: { eq: { x: $x, y: $y, z: $z } } }) {
name
location {
x
y
z
}
}
}
或者,你可以按如下方式创建带有位置的 User
mutation CreateUsers($name: String!, $x: Float!, $y: Float!, $z: Float!) {
createUsers(input: [{ name: $name, location: { x: $x, y: $y, z: $z } }]) {
users {
name
location {
x
y
z
}
}
}
}