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"}] }