索引与聚合

时间:2014-03-31 21:14:19

标签: mongodb mongoose aggregation-framework

我有一系列文件 - 活动 - 有场地/地址:

venue: {
  name: String,
  street: String,
  city: String
  ...
}

当用户创建新活动时,我想为场地提供自动填充字段 - 如果我可以事先确定用户的位置,则理想情况下按城市排序。

我看到Mongo提供了一些管理数据的方法,只需搜索集合,聚合等等。对于我的情况,推荐的方法是什么?

如果我为事件收集编制索引 - 何时需要关注搜索速度?

对于聚合...我之前没有使用它,但它似乎非常适合特别是地理搜索,但我不清楚聚合何时发生。这是我设置后自动完成/填充的东西,还是我需要在此上运行cron作业。我发现的例子不清楚。

很想听听人们遇到类似问题的经历。

1 个答案:

答案 0 :(得分:0)

Aggregations只是一个更复杂的查询版本 - 就像在SQL中你可以做SELECT * from T1SELECT foo, count(*) from T1 GROUP BY foo所以你的cron作业问题并不适用,除非你想要查询计算密集的内容,并且您想要定期预先计算它。

当您查询index the fields时,结果是查询将比未编制索引的查询运行得快得多 - 就像您熟悉RDBMS一样。

听起来你想根据用户输入的内容进行查询。如果我在旧金山,CA和我开始在场地字段中输入“S”,可能你想运行查询db.venues.find({city:"San Francisco",name:/^S/})这意味着“在旧金山市的场地,名字以'S'开头。”

我怀疑你应该保存坐标,以便你可以在MongoDB中使用geo-spacial search功能 - 然后你会得到匹配的结果,这些结果的排序距离用户设置的位置最近。

您可以使用查询执行此操作,因此我没有看到您需要聚合,但您可能会使用聚合来对场地进行各种分析 - 这里支持相同的查询,以及其他强大的数据操作操作