当Array类型的字段包含单个特定值时,有没有办法使用Mongoid(3.1.6)过滤掉文档?
例如,假设我有以下4个文件
{foo: ['a', 'b', 'c'], bar: 1}
{foo: ['b'], bar: 2}
{foo: ['a', 'c'], bar: 3}
{foo: [], bar: 4}
{bar: 5}
在此示例中,我想过滤掉字段foo
仅包含值' b'的所有文档。如果它包含' b'和其他价值观,或者不包含''在所有甚至是空的时候都应该返回文件。因此,在查询上述文档集时,我应该找回bar
为1,3,4和5的文档,而不是bar
= 2的文档。
答案 0 :(得分:0)
我终于找到了答案。在找到一些比我最初使用的更新的文档(参见here)和一些实验之间,你可以做到这一点:
FooBar.not.all_in(foo: ['b']).not.with_size(foo: 1)
这将选择除了' b'之外的所有文件。在数组中,数组的大小为1.或者换句话说,文档中的' b'是过滤掉数组中唯一的元素。