3
によって問い合わせは、私はこのようになります広告という名前のモデルがありますか? Ad.where('category.domain_id' => domain.id)
を使用しようとしましたが、これは機能しません。Mongoid参照文書
によって問い合わせは、私はこのようになります広告という名前のモデルがありますか? Ad.where('category.domain_id' => domain.id)
を使用しようとしましたが、これは機能しません。Mongoid参照文書
問題はMongoDBがCategory
レコードをAd
レコードにマッピングする方法がないことです。それはAd
レコードがcategory_id
フィールドを持つので、'category.domain_id'
は常に何も返しません。クエリ内のドット表記法は、参照(MongoDBでは依然として2番目の市民である)ではなく、埋め込みドキュメントに対してのみ機能します。 (...サブサブサブサブサブ含む)
category_ids = Category.where(:domain_id => domain.id).map(&:_id)
Ad.where(:category_id.in => category_ids)
はい、私はまた、カテゴリのすべてのサブカテゴリを取得する必要があります:
だからあなたの問題を解決するために、あなたは2つのクエリが必要です。 MapReduceを使って実装しました(idsコレクションを再帰関数で使用しようとした後)。 –