Ruby on rails Mongoid标记-从模型中收集唯一的数组项
我正在用Mongoid构建一个Rails应用程序,我需要在我的一个模型中添加标记Ruby on rails Mongoid标记-从模型中收集唯一的数组项,ruby-on-rails,ruby,mongodb,mongoid,Ruby On Rails,Ruby,Mongodb,Mongoid,我正在用Mongoid构建一个Rails应用程序,我需要在我的一个模型中添加标记 class Question include Mongoid::Document include Mongoid::Timestamps has_many :options belongs_to :user field :title, type: String field :options_count, type: Fixnum, default: 0 field :tags, ty
class Question
include Mongoid::Document
include Mongoid::Timestamps
has_many :options
belongs_to :user
field :title, type: String
field :options_count, type: Fixnum, default: 0
field :tags, type: Array
end
它工作得很好,我可以用任何一种方式获得所有问题的标签
Question.any_in(tags:'foo')
但是如何从所有相关文档中获取所有标签
我试图使用map/reduce,但看起来我只是在浏览所有文档并用Ruby处理数组,感觉不太对劲
map = %Q{
function() {
emit(this.title, {tags: this.tags});
}
}
reduce = %Q{
function(key, values) {
var result = [];
values.forEach(function(value) {
result.push(value.tags);
});
return result.toString();
}
}
map_reduce(map, reduce).out(inline: true).each do |doc|
p doc['value']
end
你可以用这个。在您的情况下,使用Mongoid:
Question.distinct(:tags)
这将返回所有文档中所有标记的数组,没有重复值。如何计算所有标记的出现次数?为此,您需要使用聚合框架,请参阅