2014-11-06 32 views
0

當Array類型的字段包含單個特定值時,有沒有使用Mongoid(3.1.6)過濾文檔的方法?使用mongoid過濾出數組字段中的特定項目的文檔

例如,說我有以下4個文件

{foo: ['a', 'b', 'c'], bar: 1} 
{foo: ['b'], bar: 2} 
{foo: ['a', 'c'], bar: 3} 
{foo: [], bar: 4} 
{bar: 5} 

在這個例子中,我想篩選出其中場foo只包含值「B」的所有文檔。如果它包含'b'和其他值,或者根本不包含'b'或者甚至是空的,則應該返回文檔。所以,當查詢上述文件集時,我應該取回bar爲1,3,4和5的文檔,但不是bar = 2的文檔。

回答

0

我終於找到了這個問題的答案。發現了一些更先進的最新文檔比我原來使用之間(見here)和一些實驗事實證明,你可以這樣做:

FooBar.not.all_in(foo: ['b']).not.with_size(foo: 1) 

這將選擇除了那些「B」的所有文件在數組中,數組的大小爲1.或換句話說,其中「b」是數組中唯一元素的文檔將被過濾掉。

相關問題