Mongoid 3 を使用して、いくつかの埋め込みドキュメントで 2 つのクエリの交差を取得しようとしています。
だから(偽の例)私が持っていると想像してください:
class Post
embeds_many :comments
index 'comments.author_id' => 1
end
class Comments
embedded_in :post
belongs_to :author
end
ユーザーからのコメント付きの投稿を取得したい場合は、
Post.where(:'comments.author_id' => User.first.id)
しかし、これらの両方のユーザーによるコメントを含む投稿を取得したい場合はどうすればよいでしょうか:
u1 = User.first.id
u2 = User.last.id
Post.where(:'comments.author_id' => u1.id, :'comments.author_id' => u2.id)
これは mongoid 3 では機能しません。最初の comments.author_id を 2 番目のもので上書きするので、次のようになります。
command={:count=>"posts", :query=>{"comments.author_id"=>"505d1eb5f8182b7082000017"}}
運がなくても試した他のバリエーション:
Post.where(:'comments.author_id' => u1.id).where(:'comments.author_id' => u2.id)
Post.where(:'comments.author_id' => u1.id).and.where(:'comments.author_id' => u2.id)
Post.where(:'comments.author_id' => u1.id).intersect.where(:'comments.author_id' => u2.id)
Post.all_of(:'comments.author_id' => u1.id, :'comments.author_id' => u2.id)
このクエリを構築するより良い方法はありますか? ありがとう!