我有一个名为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
答案 0 :(得分:1)
你几乎就在那里:
DistributedHealth.distinct('deviceID').count
您希望使用distinct
获取不同的deviceID
,然后使用Array#count
(或Array#length
计算它们,如果您想提醒自己,那么真正计算数组中的元素,而不是直接查询数据库中的计数)。