MongoDB Compass 使用 object 而非数组分析架构并显示地图
MongoDB Compass analyze schema and show map using object and not array
我正在使用 MongoDB Compass v1.26,我有一些 collections 和 lat/long 数据,但它们看起来像这样:
"coordinates": {
"latitude": "43.0818",
"longitude": "-87.892"
}
它不会在架构 > 分析中提取它以显示为地图。我认为它需要是一个数组。
但是,使用该工具,我只能过滤、投影、排序等。因此,除了存储整个文件的转换副本外,我无法 运行 查询 { $objectToArray: <object> }
collection.
如果您的字段包含 GeoJSON 数据或 [longitude,latitude]
数组,“架构”选项卡将显示包含字段中的点的地图。位置字段的数据类型是坐标。
MongoDB 支持 GeoJSON 对象类型。
要指定 GeoJSON 数据,请使用嵌入文档:
- 一个名为
type
的字段,用于指定 GeoJSON 对象类型和
- 指定对象坐标的名为
coordinates
的字段。
如果指定经纬度坐标,先列出longitude
,然后列出latitude
:
coordinates: [<longitude>, <latitude>]
或
<field>: { type: <GeoJSON type> , coordinates: [<longitude>, <latitude>] }
您可以在 PROJECT 部分尝试下面的投影,
$toDouble
将字符串转换为双精度类型
- 按照数组中的第一个语法传递 long 和 lat
{ coordinates: [{ $toDouble:"$coordinates.longitude"}, {$toDouble:"$coordinates.latitude"}] }
我正在使用 MongoDB Compass v1.26,我有一些 collections 和 lat/long 数据,但它们看起来像这样:
"coordinates": {
"latitude": "43.0818",
"longitude": "-87.892"
}
它不会在架构 > 分析中提取它以显示为地图。我认为它需要是一个数组。
但是,使用该工具,我只能过滤、投影、排序等。因此,除了存储整个文件的转换副本外,我无法 运行 查询 { $objectToArray: <object> }
collection.
如果您的字段包含 GeoJSON 数据或 [longitude,latitude]
数组,“架构”选项卡将显示包含字段中的点的地图。位置字段的数据类型是坐标。
MongoDB 支持 GeoJSON 对象类型。
要指定 GeoJSON 数据,请使用嵌入文档:
- 一个名为
type
的字段,用于指定 GeoJSON 对象类型和 - 指定对象坐标的名为
coordinates
的字段。
如果指定经纬度坐标,先列出longitude
,然后列出latitude
:
coordinates: [<longitude>, <latitude>]
或
<field>: { type: <GeoJSON type> , coordinates: [<longitude>, <latitude>] }
您可以在 PROJECT 部分尝试下面的投影,
$toDouble
将字符串转换为双精度类型- 按照数组中的第一个语法传递 long 和 lat
{ coordinates: [{ $toDouble:"$coordinates.longitude"}, {$toDouble:"$coordinates.latitude"}] }