0

Rails 3 と MongoDB (mongoid アダプター) を使用してアプリケーションを構築しています。子レコードで特定の条件を持つ親レコードを見つけるのに苦労しています。

class Food
  include Mongoid::Document
  has_many :subscriptions, as: :subscribable
end

class Subscription
 include Mongoid::Document
 field :subscriber_id
 belongs_to :subscribable, polymorphic: true
 belongs_to :subscriber
end

特定のユーザーが購読していない食品を選択したい。

これが機能しないクエリです。

Food.not_in('subscriptions.subscriber_id' => [User.first.id])

しかし、それはすべての食べ物を返します。クエリの何が問題になっていますか?

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

0

このようなクエリは Mongoid では機能しません。次のクエリは 2 つのコレクションを結合する必要がありますが、MongoDB には結合の概念がありません。したがって、クエリを実行するときは、クエリしているコレクション内のドキュメントのフィールドのみを使用できます。この場合はコレクションですfoods(ほとんどの場合)。

サブスクリプションに基づいて food をクエリしたくない場合Subscriptionは、 Food に を埋め込むことをお勧めします。ここで説明したように。

于 2012-08-20T06:42:17.050 に答える