Выполнение ИЛИ из двух монгоидных запросов «any_in»

#ruby #mongodb #mongoid

#ruby #mongodb #монгоид

Вопрос:

Если у меня есть два запроса, которые выглядят как:

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

Как мне объединить их в OR, используя any_of? Я пробовал это, и это не так.
Я пытался

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

Ответ №1:

Похоже, что он не полностью поддерживается в Mongoid, поэтому мне пришлось сделать:

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

Ответ №2:

Вы передаете $ или запрашиваете массив из $ в таких условиях:

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

Ответ №3:

any_in принимает массив значений OR с помощью $in оператора.

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