Learn the "why" behind slow queries and how to fix them in our 2-Part Webinar.
Register now >
Docs Menu
Docs Home
/ /

$all (쿼리 자 연산자)

$all

연산자 $all 필드 값이 지정된 모든 값과 일치하는 문서를 선택합니다. 일치하는 문서에는 지정된 모든 요소를 포함하는 배열 인 값이 있는 필드 또는 지정된 요소와 일치하는 단일 값이 있는 필드 포함될 수 있습니다.

다음 환경에서 호스팅되는 배포에 $all 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

  • MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전

  • MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전

$all 표현식을 지정하려면 다음 프로토타입을 사용합니다.

{ <field>: { $all: [ <value1> , <value2> ... ] } }

$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 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 연산자 와 함께 사용할 수 있습니다.

다음 작업은 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는 배열을 세트로 처리하지 않습니다. 이 연산자는 이 접근 방식에 대한 주목할 만한 예외를 제공합니다.

배열 쿼리에 대한 추가 예시는 다음을 참조하세요.

쿼리에 대한 추가 예는 쿼리 문서를 참조하세요.

돌아가기

배열

이 페이지의 내용