You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MongoDB中按location经纬度分组返回事件集合数据

MongoDB按经纬度分组事件文档

这个需求完全可以实现,通过MongoDB的聚合管道就能完成。以下是具体的查询语句和步骤说明:

聚合查询代码

db.events.aggregate([
  // 按经纬度组合分组,收集同位置的所有事件
  {
    $group: {
      _id: {
        latitude: "$location.latitude",
        longitude: "$location.longitude"
      },
      events: { $push: "$$ROOT" }
    }
  },
  // 将所有分组的事件数组汇总到一个数组中
  {
    $group: {
      _id: null,
      groupedEvents: { $push: "$events" }
    }
  },
  // 剔除不需要的_id字段
  {
    $project: {
      _id: 0,
      groupedEvents: 1
    }
  },
  // 将汇总后的数组设为返回结果的顶层结构
  {
    $replaceRoot: { newRoot: "$groupedEvents" }
  }
])

各阶段说明

  • 第一阶段$group:以经纬度的组合作为分组标识,使用$push: "$$ROOT"把当前完整的事件文档添加到events数组中,实现同位置事件的聚合。
  • 第二阶段$group:全局分组(_id: null),把每个位置对应的events数组收集到groupedEvents数组里,形成你需要的数组嵌套结构。
  • $project:移除自动生成的_id字段,只保留目标数组。
  • $replaceRoot:将groupedEvents数组提升为返回结果的顶层,最终输出格式与你期望的完全一致。

如果不需要严格的数组嵌套结构,仅保留每个经纬度对应事件数组的对象集合,只需要执行第一阶段的$group即可。

内容的提问来源于stack exchange,提问作者Jovan Jevtić

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:17:01