我正在使用Mongoid构建一个Rails 4应用程序。
我现在遇到的问题是如何通过自己的关系过滤一些Mongoid对象,并在末尾有一个Mongoid :: Criteria而不是数组。
这是一些示例代码:
class Editor
include Mongoid::Document
has_many :books
def likes
books.collect { |book| book.likes }
end
end
class Book
include Mongoid::Document
belongs_to :editor
end
我希望能够做的是:
Editor.last.likes.where(:created_at.gt => 10.days.ago)
但当然这不起作用,因为Editor.last.likes返回一个数组,而不是一个Mongoid :: Criteria
我知道Mongoid有一个聚合框架,但我不清楚如何使用它,也不是解决问题的最佳方法。
建议?
TIA, NGW
答案 0 :(得分:1)
你遇到的最大问题是MongoDB没有像关系数据库那样进行连接。遍历对象属性时为方便起见而进行的所有工作都在客户端完成,同时在查询中通过线路拉入“相关”文档。但是在发送查询时,无法连接这两个集合。
您的变通方法解决方案是使用您可以在单独的查询中获得的数据来定位结果。一种方法是:rails mongoid criteria find by association
Stack Overflow上应该有其他示例。你不是第一个问的人。