2014-11-06 1 views
0

Array 유형의 필드에 단일 값이 있으면 Mongoid (3.1.6)를 사용하여 문서를 필터링하는 방법이 있습니까? 예를 들어mongoid를 사용하여 배열 필드의 특정 항목으로 문서 필터링

, 나는 다음과 같은 4 개 문서 I 필드 foo은 값 'B'를 포함하는 모든 문서를 필터링 할이 예에서

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

을 말한다. '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'가 배열의 유일한 요소 인 문서는 필터링됩니다.

관련 문제