私はmongodbが初めてです。
いくつかのドキュメントをリストしようとしています。私のクラスにはhas_many
関連があります。この関連からのドキュメントの数を表示したいと思います。
熱心な読み込みを行う必要がありますか?
すべてのドキュメントを使用includes
すると、ロードされるので、カウントだけが必要です。
ID マップが有効になっています
私はmongodbが初めてです。
いくつかのドキュメントをリストしようとしています。私のクラスにはhas_many
関連があります。この関連からのドキュメントの数を表示したいと思います。
熱心な読み込みを行う必要がありますか?
すべてのドキュメントを使用includes
すると、ロードされるので、カウントだけが必要です。
ID マップが有効になっています
熱心な読み込みでドキュメント全体が読み込まれないようにする方法がわかりません。それが今可能かどうか知りたいです。
次のようにカウントを取得できます。
ChildDoc.where(myclass_id: myclass_obj.id).count
したがって、関連付けの暗黙的に作成された外部キー フィールドに対してクエリを実行しています。これは依然として親ドキュメントごとのクエリですが、理想的には高速なクエリです。
パフォーマンスが本当に問題である場合は、次のように、より多くのデータを 1 回のトリップで返す単一のクエリを作成できます。含まれているドキュメントのすべての ID です。
ChildDoc.where(myclass_id: {"$in" => list_of_myclass_objs.map {|x| x.id}}).only(:id, :myclass_id)
あなたはこれに慣れていないので、FK フィールドのインデックスを自分で作成したいと思うかもしれないことを付け加えておきます。mongoid はこれを行いません。
class ChildDoc
include Mongoid::Document
belongs_to :myclass
index({ myclass_id: 1 })
end
その後
rake db:mongoid:create_indexes