我正在尝试用 MongoDB 实现一些已被证明相当困难的事情。
我有 2 个收藏。一个称为“标记”,另一个称为“路线”,保存用户在标记之间创建的路线。路由集合有两个重要字段:[start_marker] 和 [end_marker]。这些字段是标记集合中标记的 _id。
浏览地图时,应用程序对标记集合进行地理空间框查询,以在地图上查找和显示标记。
当用户单击标记时,气泡会显示标记名称。
在名称下方还有一个我遇到问题的动态字段。该字段应该显示:
- 从地图上的选定标记驱动到哪些标记
- 这些标记被驱动了多少次
- 只有 3 个最常被驱动的标记将显示在动态字段中
由于我的记录集合记录了 [start_marker] 和 [end_marker] _id,因此我在记录集合中查询 [start_marker] 字段中所选标记的 _id。
这会产生数百个文档,其中所选标记始终位于 [start_marker] 字段中。现在,我想对出现次数最多的 [end_markers] 进行排序,计算它们出现的次数,选择前 3 个,获取它们的 _id 并与它们一起查询标记集合以提取标记名称。
问题是,count 需要我知道要按哪个结束标记字段进行计数,这反过来又需要我知道它发生的频率。捕获 22。
最终气泡结果如下所示:
城市 1
城市 16 - 256 次
城市 21 - 118 次
城市 4 - 88 次
我愿意更改数据库结构,因为 Mongo 是无模式的,可能会在某处添加一个计数字段,但此刻我完全不知所措。此查询每秒会发生几百次,因此 map reduce 可能会对数据库性能产生负面影响。一些输入将不胜感激!