计算字段中具有唯一值的记录数时出错

时间:2015-06-26 20:25:14

标签: ruby-on-rails ruby mongodb ruby-on-rails-4 mongoid

我有一个名为deviceID的字段,我正在尝试获取数据库(MongoDB)中该字段的唯一值的数量。我在查看this SO post中的例子,但他们都没有为我工作。我正在使用Rails 4.2.2,我也有这些代码行正在运行:

示例1:

<p id="total">Total number of database entries: <%= DistributedHealth.count %></p>

示例2:

<% @distributed_healths.each do |distributed_health| %>
  <tr>
    <td><%= distributed_health.deviceID %></td>
  </tr>
<% end %>

这些是我完成这项工作的失败尝试。

尝试失败#1:

<%= DistributedHealth.distinct.count(:deviceID) %>

#1错误:

wrong number of arguments (0 for 1)

尝试失败#2:

<%= DistributedHealth.distinct.count('deviceID') %>

#2错误:

wrong number of arguments (0 for 1)

尝试#3失败(我知道这是针对Rails 3的,但我很绝望):

<%= DistributedHealth.count('deviceID', :distinct => true) %>

#3错误:

wrong number of arguments (2 for 0)

我可以发布任何有用的其他代码,非常感谢任何帮助。如果我开始工作,我会更新这篇文章。提前谢谢。

克莱顿

编辑1:

来自我的Gemfile:

gem 'mongoid'
gem "moped"
gem 'bson_ext'

解决方案:

如下所示,我需要的代码是

DistributedHealth.distinct('deviceID').count

1 个答案:

答案 0 :(得分:1)

你几乎就在那里:

DistributedHealth.distinct('deviceID').count

您希望使用distinct获取不同的deviceID,然后使用Array#count(或Array#length计算它们,如果您想提醒自己,那么真正计算数组中的元素,而不是直接查询数据库中的计数)。