$all연산자
$all필드 값이 지정된 모든 값과 일치하는 문서를 선택합니다. 일치하는 문서에는 지정된 모든 요소를 포함하는 배열 인 값이 있는 필드 또는 지정된 요소와 일치하는 단일 값이 있는 필드 포함될 수 있습니다.
호환성
다음 환경에서 호스팅되는 배포에 $all 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
$all 표현식을 지정하려면 다음 프로토타입을 사용합니다.
{ <field>: { $all: [ <value1> , <value2> ... ] } }
행동
$and 작업과 동일
$all 는 지정된 값의 연산에 해당합니다. 예시 를 들어 다음 두 쿼리는 $and 동일합니다.
{ tags: { $all: [ "ssl" , "security" ] } } { $and: [ { tags: "ssl" }, { tags: "security" } ] }
중첩 배열
중첩된 배열 의 배열 이 전달되는 경우(예: [ [ "A" ] ] ), $all 는 필드 에 중첩 배열 이 요소로 포함된 문서와 일치합니다(예: field: [ [ "A" ], ... ]), 또는 필드 가 중첩 배열 과 같음(예: field: [ "A" ]).
예를 들어 다음 쿼리를 생각해 보세요.
db.articles.find( { tags: { $all: [ [ "ssl", "security" ] ] } } )
해당 쿼리는 다음과 같습니다.
db.articles.find( { $and: [ { tags: [ "ssl", "security" ] } ] } )
은 다음과 동일합니다.
db.articles.find( { tags: [ "ssl", "security" ] } )
따라서 $all 표현식 은 tags 필드 가 중첩 배열 [ "ssl",
"security" ] 을 포함하는 배열 이거나 중첩 배열 과 동일한 배열 인 문서와 일치합니다.
tags: [ [ "ssl", "security" ], ... ] tags: [ "ssl", "security" ]
빈 배열
빈 배열을 전달하면 $all은 문서와 일치하지 않습니다.
예시
이 페이지의 예시에서는 sample_mflix 샘플 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB 배포서버에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예시를 실행 하려면 데이터베이스를 제거하고 다시 만들어야 할 수 있습니다.
$all 을(를) 사용하여 값 일치
다음 작업은 연산자 사용하여 컬렉션 에서 필드 $all movies directors 값이 John Murray Anderson 및 를 포함하는 배열 인 문서를 쿼리 .Pèl Fejès
db.movies.find( { directors: { $all: ['John Murray Anderson','Pèl Fejès'] } }, { title: 1, directors: 1, year: 1 })
위의 쿼리 다음 문서 를 반환합니다.
[ { _id: ObjectId('573a1391f29313caabcd9336'), title: 'King of Jazz', directors: [ 'John Murray Anderson', 'Pèl Fejès' ], year: 1930 } ]
와 함께 사용 $all $elemMatch
단일 배열 요소 또는 문서 배열 에 대해 여러 조건을 일치시키려면 을 $all $elemMatch 연산자 와 함께 사용할 수 있습니다.
다음 작업은 embedded_movies 컬렉션 에서 문서를 쿼리합니다.
하나 이상의 작성자에게
story크레딧 있지만screenplay크레딧 없는 경우하나 이상의 작성자에게
titles크레딧 있지만adaptation크레딧 없는 경우
db.embedded_movies.find( { writers: { $all: [ { $elemMatch: { $regex: '\\bstory\\b', $not: { $regex: '\\bscreenplay\\b' }}}, { $elemMatch: { $regex: '\\btitles\\b', $not: { $regex: '\\badaptation\\b' }}} ]}}, { title: 1, writers: 1, year: 1 })
이 쿼리는 다음 문서를 반환합니다.
[ { "_id": { "$oid": "573a1391f29313caabcd93a3" }, "title": "Men Without Women", "writers": [ "John Ford (story)", "James Kevin McGuinness (story)", "Dudley Nichols (screen play and scenario)", "Otis C. Freeman (titles)" ], "year": 1930 }, { "_id": { "$oid": "573a1391f29313caabcd8319" }, "title": "For Heaven's Sake", "writers": [ "Ted Wilde (story)", "John Grey (story)", "Clyde Bruckman (story)", "Ralph Spence (titles)" ], "year": 1926 }, { "_id": { "$oid": "573a1391f29313caabcd7bc3" }, "title": "The Iron Horse", "writers": [ "Charles Kenyon (story)", "John Russell (story)", "Charles Kenyon (scenario)", "Charles Darnton (titles)" ], "year": 1924 } ]
참고
대부분의 경우 MongoDB는 배열을 세트로 처리하지 않습니다. 이 연산자는 이 접근 방식에 대한 주목할 만한 예외를 제공합니다.
추가 예시
배열 쿼리에 대한 추가 예시는 다음을 참조하세요.
쿼리에 대한 추가 예는 쿼리 문서를 참조하세요.