执行两个Mongoid“any_in”查询的OR

时间:2011-09-30 16:04:09

标签: ruby mongodb mongoid

如果我有两个类似的查询:

Store.any_in(:store_id => @user.stores_followed)
Store.any_in(:store_id => @category.stores)

如何使用any_of将这些加入OR?我试过这个但事实并非如此。 我试过了

Store.any_of({:store_id.any_in => @user.stores_followed}, 
  {:store_id.any_in => @category.stores})

3 个答案:

答案 0 :(得分:6)

看起来它在Mongoid中并不完全支持,所以我必须这样做:

Store.any_of({"store_id" => { "$in" => @user.stores_followed}}, {"store_id" => 
   {"$in" => (:store_id => @category.stores)}})

答案 1 :(得分:4)

你传递$或查询$的数组,条件如下:

Store.or( { :store_id.in => @user.stores_followed }, { :store_id.in => @category.stores } )

答案 2 :(得分:1)

any_in使用$in运算符接受一组OR值。

ids = @user.stores_followed.map(&:id) + @category.stores.map(&:id)
Store.any_in(:store_id => ids)