私はClient
とGroup
モデルを持っています。クライアントには多くのグループがあります。
class Client
include Mongoid::Document
include Mongoid::Paranoia
include Mongoid::Timestamps
field ...
has_many :groups, dependent: :delete
...
end
class Group
...
belongs_to :client
end
1 つのクライアントに40,000のグループがあり、試しclient.groups
てみると時間がかかりすぎます。数分待っても終わりません。
MONGODB (14.2ms) humtl_development['groups'].find({:deleted_at=>nil, "client_id"=>BSON::ObjectId('51b37763218c5a19e0000048')})
MONGODB [DEBUG] cursor.refresh() for cursor 48594378191047181
私はモンゴイドのドキュメントでこれを見つけました。
40k はドキュメントが多すぎますか? has_many
関係を取り除き、embeds_many
代わりに使用する必要がありますか? 問題は私のmongoidバージョンですか?MongoDB 構成? アドバイスをいただければ幸いです。
確かに、40,000 個のグループすべてを表示する必要はありません。必要なのはUser.where(:group_id.in => client.groups.map(&:id))
.
本当にありがとう。
PS: MongoDB v2.4.3 mongoid v2.7.1 mongo v1.9.2