2012-03-12 60 views
1

這是設置。如何查詢具有包含Mongoid中特定元素集的數組屬性的所有記錄?

user has_many skills 
skills belongs_to user 

我必須找出與IDS 1,2和3

我可以用三個用戶集合交集技能的所有用戶。

Skill.find(1).users & Skill.find(2).users & Skill.find(3).users 

但這看起來效率不高。在Mongoid/MongoDB中是否有類似於以下的查詢?

User.where(:skill_ids.contains=>[1,2,3]) 

PS:我知道Mongoid給出的關鍵字:

User.where(:skill_id.in=>[1,2,3]) 

回答

3

我認爲你正在尋找MongoDB的$all查詢操作:

$所有

$all運營商類似於$in,但不是匹配指定數組中的任何值,而是必須匹配數組中的所有值。
[...]
一個數組可以具有比$all條件指定的元素更多的元素。 $all指定了必須匹配的最小元素集合。

User.where(:skill_id.all => [1,2,3]) 

應該爲你工作:

Mongoid通過all_in我認爲這是可以作爲.all上的符號,所以我認爲這提供了訪問$all

相關問題