空间类型

这是 GraphQL 库版本 7 的文档。对于长期支持 (LTS) 版本 5,请参阅 GraphQL 库版本 5 LTS

空间类型

Neo4j GraphQL 空间类型转换为使用数据库中的 Point 存储的空间值。在 GraphQL Schema 中使用这些类型中的任何一种,都会自动引入运行与这些空间类型相关的查询和变更所需类型。

Point

Point 类型用于描述 Neo4j 支持的两种 地理坐标参考系统

为了在您的 Schema 中使用它,请在您的 Schema 中向任何其他类型添加一个类型为 Point 的字段,如下所示

 type TypeWithPoint @node {
    location: Point!
}

Point 类型会自动添加到您的 Schema 中,此外还会添加您通过 API 查询和操作空间类型所需的输入和输出类型。

有关筛选选项,请参阅 筛选空间类型

类型定义

type Point {
  longitude: Float!
  latitude: Float!
  height: Float
  crs: String!
  srid: Int!
}

查询和变更

由于 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 支持的两种 笛卡尔坐标参考系统

要在您的 Schema 中使用它,请向任何类型添加一个类型为 CartesianPoint 的字段,例如本示例中所示

type TypeWithCartesianPoint @node {
    location: CartesianPoint!
}

CartesianPoint 类型会自动添加到您的 Schema 中,此外还会添加您通过 API 查询和操作空间类型所需的输入和输出类型。

有关筛选选项,请参阅 筛选空间类型

类型定义

type CartesianPoint {
  x: Float!
  y: Float!
  z: Float
  crs: String!
  srid: Int!
}

查询和变更

由于 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
            }
        }
    }
}
© . All rights reserved.