Выполнение ИЛИ двух монгоидных запросов any_in - PullRequest
4 голосов
/ 30 сентября 2011

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

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

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

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

Ответы [ 3 ]

6 голосов
/ 30 сентября 2011

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

Store.any_of({"store_id" => { "$in" => @user.stores_followed}}, {"store_id" => 
   {"$in" => (:store_id => @category.stores)}})
4 голосов
/ 17 июля 2013

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

Store.or( { :store_id.in => @user.stores_followed }, { :store_id.in => @category.stores } )
1 голос
/ 17 октября 2012

any_in принимает массив значений ИЛИ, используя оператор $in.

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