【问题标题】:MongoDB map/reduce "NoMethodError: undefined method `map_reduce' for #<Moped::Collection"MongoDB map/reduce "NoMethodError: undefined method `map_reduce' for #<Moped::Collection"
【发布时间】:2012-11-30 03:42:26
【问题描述】:

我正在尝试通过 ruby​​ 控制台在集合上使用 map_reduce,但我收到“NoMethodError: undefined method `map_reduce' for #

results = Thing.collection.map_reduce(map, reduce, out: "vr")

【问题讨论】:

    标签: mongodb mongoid


    【解决方案1】:

    Mongoid 3 中的 Map Reduce 的工作方式略有不同。您拥有的语法适用于 mongo ruby​​ 驱动程序。在 Mongoid 3 中,您将其从类或标准中调用,如下所示:

    从一个标准:

    Model.where(field: value).map_reduce(map, reduce).out(inline: true)
    

    来自一个班级:

    SomeClass.map_reduce(map, reduce).out(replace: "mr-results").each do |document|
      #do something
    end
    

    您可以在Mongoid docs中找到更多信息

    【讨论】:

    • 不确定您的答案是否适用。这是我关注的packtpub.com/article/ruby-mongodb-web-developement
    • 您给出的示例是使用 Mongoid 2.2.1,而您收到的错误是指Moped::Collection。 Moped 是 Mongoid 3 的 MongoDB 驱动程序。在 Mongoid 2 中,您可以按照您提供的格式将 map reduce 传递给 Ruby 驱动程序。在 Mongoid 3 中,map/reduce 是从一个类或标准中调用的,而不是从一个集合中调用的。
    猜你喜欢
    • 1970-01-01
    • 2012-02-01
    • 2015-03-19
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 2016-01-02
    • 2012-08-08
    相关资源
    最近更新 更多