- DocumentDB SQL 教程
- DocumentDB SQL - 首页
- DocumentDB SQL - 概述
- DocumentDB SQL - SELECT 语句
- DocumentDB SQL - FROM 语句
- DocumentDB SQL - WHERE 语句
- DocumentDB SQL - 运算符
- DocumentDB - BETWEEN 关键字
- DocumentDB SQL - IN 关键字
- DocumentDB SQL - VALUE 关键字
- DocumentDB SQL - ORDER BY 语句
- DocumentDB SQL - 迭代
- DocumentDB SQL - 连接
- DocumentDB SQL - 别名
- DocumentDB SQL - 数组创建
- DocumentDB - 标量表达式
- DocumentDB SQL - 参数化
- DocumentDB SQL - 内置函数
- LINQ to SQL 转换
- JavaScript 集成
- 用户自定义函数
- 复合 SQL 查询
- DocumentDB SQL 有用资源
- DocumentDB SQL - 快速指南
- DocumentDB SQL - 有用资源
- DocumentDB SQL - 讨论
DocumentDB SQL - 空间函数
DocumentDB 还支持用于地理空间查询的开放地理空间联盟 (OGC) 内置函数。以下是支持的内置空间函数列表。
| 序号 | 函数及描述 |
|---|---|
| 1 | ST_DISTANCE (point_expr, point_expr) 返回两个 GeoJSON 点表达式之间的距离。 |
| 2 | ST_WITHIN (point_expr, polygon_expr) 返回一个布尔表达式,指示第一个参数中指定的 GeoJSON 点是否在第二个参数中的 GeoJSON 多边形内。 |
| 3 | ST_ISVALID 返回一个布尔值,指示指定的 GeoJSON 点或多边形表达式是否有效。 |
| 4 | ST_ISVALIDDETAILED 返回一个 JSON 值,其中包含一个布尔值(指示指定的 GeoJSON 点或多边形表达式是否有效),如果无效,则另外包含原因作为字符串值。 |
在这个例子中,我们将使用包含坐标形式位置的两个大学文档。
以下是 **凯斯西储大学文档**。
{
"id": "case-university",
"name": "CASE: Center For Advanced Studies In Engineering",
"city": "Islamabad",
"location": {
"type": "Point",
"coordinates": [
33.7194136,
-73.0964862
]
}
}
以下是 **努斯特大学文档**。
{
"id": "nust",
"name": "National University of Sciences and Technology",
"city": "Islamabad",
"location": {
"type": "Point",
"coordinates": [
33.6455715,
72.9903447
]
}
}
让我们来看另一个 ST_DISTANCE 的例子。
以下是返回大学文档的 ID 和名称的查询,这些文档位于指定位置 30 公里以内。
SELECT u.id, u.name
FROM Universities u
WHERE ST_DISTANCE(u.location, {'type': 'Point', 'coordinates':[33.7, -73.0]}) < 30000
执行上述查询后,将产生以下输出。
[
{
"id": "case-university",
"name": "CASE: Center For Advanced Studies In Engineering"
}
]
让我们来看另一个例子。
以下是包含 ST_ISVALID 和 ST_ISVALIDDETAILED 的查询。
SELECT
ST_ISVALID({ "type": "Point", "coordinates": [32.9, -132.8] }) AS Point1,
ST_ISVALIDDETAILED({ "type": "Point", "coordinates": [31.9, -132.8] }) AS Point2
执行上述查询后,将产生以下输出。
[
{
"Point1": false,
"Point2": {
"valid": false,
"reason": "Latitude values must be between -90 and 90 degrees."
}
}
]
上述输出显示 ST_ISVALIDDETAILED 也返回该点无效的原因,而 ST_ISVALID 只返回布尔值。
documentdb_sql_builtin_function.htm
广告