mysql - 相对于各种选项的预计算计数

标签 mysql ruby-on-rails mongodb meteor database

因为我一直在努力通过谷歌找到解决方案的同样原因而为这篇文章的标题而苦苦挣扎,我在问什么??

我通常会在 rails+postgresql 中编写这个应用程序,但我被 meteor+mongodb 所吸引,尽管这可能与问题无关。

我正在尝试为数据库模型预先计算和索引值,该模型应根据用户提供的其他参数进行更改/更新。数据库将包含数百万条记录,因此预填充值是理想的。

我最终将拥有一个充满“公司”的数据库,这些公司具有各种属性,例如:

location_country
location_city
incorporation_month
incorporation_year
...

当列出所有公司时,网站将允许用户通过上述属性缩小列表范围。

因此,首先我通常会在将公司添加到数据库时为每个属性的值添加一个计数器,并在列表网页中快速访问该计数,例如:

select country:
    > England (22 companies)
    > France (26 companies)
    ...

但是当一个人可以在搜索中添加多个参数时,事情就变得更加棘手了:

Select incorporation year:
    2015 (126 companies) SELECTED
    2014 (435 companies)
    2013 (315 companies)

# below counts are including the above selection as a parameter
# but should be pre calculated

Select location:
    England (13 companies)
    France (8 companies)

我正在尝试弄清楚我应该保存什么,以便无论给出的搜索参数顺序如何,我都可以进行计数。

这个问题非常模糊,因为我只是在寻找我应该搜索或阅读的内容/位置的指示。

如果有什么能给我指出正确的方向,我将不胜感激?

最佳答案

这里有一个选项......为用于计算计数的对象保留一个 ID 数组,然后当您选择了多个参数时,您可以对数组进行并集以获得计数。

例子

# Anywhere
Counts = new Mongo.Collection("counts");

# Client (or maybe Server method)
countByLocationEngland = Counts.findOne({location_country: 'GB'});

countByIncorporationYear = Counts.findOne({incorporation_year: 2015});

union = _.union(countByLocationEngland.array, countByIncorporationYear.array);

count = union.length

关于mysql - 相对于各种选项的预计算计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32252370/

相关文章:

php - 创建图像的缩略图,然后将其保存到数据库中

mysql - 一个查询,告诉每个位置的提交数量以及位置的名称

mysql - 如何通过网络从sql server导出或导入sql server数据库到mysql server

PHP/MySql : find missing records by comparing to lists

ruby-on-rails - 使用 RubyOnRails 上传 HTML5 FormData 文件

java - Mongo spring 查询两个字段相等的情况

ruby-on-rails - 恢复 mongodb 数据库 .bson 和 .json 文件

ruby-on-rails - 选择关系不为空的记录

java - 通过java驱动程序连接到mongo shard 3.2.2

mongodb - Dockerized数据库密码管理