Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Mongoid标记-从模型中收集唯一的数组项_Ruby On Rails_Ruby_Mongodb_Mongoid - Fatal编程技术网

Ruby on rails Mongoid标记-从模型中收集唯一的数组项

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

我正在用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, 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) 

这将返回所有文档中所有标记的数组,没有重复值。

如何计算所有标记的出现次数?为此,您需要使用聚合框架,请参阅