Ruby on rails RoR MongoID查找不';不行?
我是MongoID(&mongoDB)的新手,由于从引用集合中提取数据而导致性能问题Ruby on rails RoR MongoID查找不';不行?,ruby-on-rails,ruby,mongodb,mongoid,Ruby On Rails,Ruby,Mongodb,Mongoid,我是MongoID(&mongoDB)的新手,由于从引用集合中提取数据而导致性能问题 class Accounting::Invoice include Mongoid::Document belongs_to :contact, :class_name => 'Contact' End class Contact include Mongoid::Document field :name, type: String end 还使用gem'kaminarim
class Accounting::Invoice
include Mongoid::Document
belongs_to :contact, :class_name => 'Contact'
End
class Contact
include Mongoid::Document
field :name, type: String
end
还使用gem'kaminarimongoid'进行分页
我的查询的简化版本是:
@invoices = Accounting::Invoice.all.page(params[:page].to_i)
<% @invoices.each do |inv| %>
<% inv.contact.name %>
<% end %>
@invoices=Accounting::Invoice.all.page(参数[:page].to_i)
问题是,当我显示数据时,为了简单地从Contact collection获取名称,我必须重新连接到DB并提取每个列表的名称。我尝试使用$lookup,但是当我使用kaminari进行分页时,它不起作用
关于如何在不需要重新连接数据库的情况下获取联系人姓名,有什么建议吗
谢谢你所经历的一切。通过对关联使用,可以将查询数减少到2。就你而言:
Accounting::Invoice.includes(:contact)
.page(params[:page].to_i)
我们应该做到这一点
当它返回ActiveRecord::Relation
对象时,您可以链接应用于AREL的其他作用域和方法。因此,如果您只想将与此一起使用
,请按以下步骤操作:
Accounting::Invoice.includes(:contact)
.only(<list_of_attributes>)
.page(params[:page].to_i)
会计::发票。包括(:联系人)
.仅()
.page(参数[:page].to_i)
重新连接到DB是什么意思?基本上,对于每个inv.contact.name,它都会连接回服务器以从contact获取名称。因此,如果我有50张发票要显示,我的Im总共会发出51个查询。1原始数据,发票清单。每个联系人50美元。姓名尝试Accounting::Invoice.includes(:Contact)。page(params[:page]。to_i)
!是否有一种方法可以“仅”与引用的集合集成?