문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / /

$indexOfArray (애그리게이션)

이 페이지의 내용

  • 정의
  • 행동
  • 예제
$indexOfArray

지정된 값의 발생을 배열에서 검색하고 첫 번째 발생의 배열 인덱스를 반환합니다. 배열 인덱스는 0부터 시작합니다.

$indexOfArray 에는 다음과 같은 연산자 표현식 구문이 있습니다.

{ $indexOfArray: [ <array expression>, <search expression>, <start>, <end> ] }
필드
유형
설명
<array>
문자열

배열로 해석되는 한 모든 유효한 표현식일 수 있습니다. 표현식에 대한 자세한 내용은 표현식 연산자를 참조하세요.

배열 표현식이 null 값으로 확인되거나 누락된 필드를 참조하는 경우 $indexOfArraynull을 반환합니다.

배열 표현식이 배열 또는 null로 확인되지 않거나 누락된 필드를 참조하지 않는 경우 $indexOfArray는 오류를 반환합니다.

<search value>
문자열
유효한 표현식이면 무엇이든 가능합니다. 표현식에 대한 자세한 내용은 표현식 연산자를 참조하세요.
<start>
integer

선택 사항. 정수 또는 검색의 시작 인덱스 위치를 지정하는 정수(예: 2.0)로 표시할 수 있는 숫자입니다. 음수가 아닌 정수로 해석되는 유효한 표현식이 될 수 있습니다.

지정하지 않으면 검색의 시작 인덱스 위치는 문자열의 시작입니다.

<end>
integer

선택 사항입니다. 정수 또는 정수로 나타낼 수 있는 숫자(예: 2.0)로 검색의 끝 인덱스 위치를 지정합니다. 음수가 아닌 정수로 확인되는 유효한 표현식 일 수 있습니다. <end> 인덱스 값을 지정하면 <start> 인덱스 값도 지정해야 합니다. 그렇지 않으면 $indexOfArray<end> 값 대신 <end> 값을 <start> 인덱스 값으로 사용합니다.

지정하지 않으면 검색의 끝 인덱스 위치는 문자열의 끝입니다.

<search expression><array expression> 내에서 여러 번 발견되면 $indexOfArray는 시작 인덱스 위치에서 첫 번째 <search expression> 의 인덱스를 반환합니다.

$indexOfArraynull을 반환합니다.

  • <array expression>이(가) null인 경우, 또는

  • <array expression>이 입력 문서에 존재하지 않는 필드를 참조하는 경우

$indexOfArray 은(는) 오류를 반환합니다.

  • <array expression> 배열이 아니고 null이 아닌 경우 또는

  • <start> 또는 <end>가 음의 정수(또는 -5.0과 같이 음의 정수로 표시될 수 있는 값)인 경우

$indexOfArray-1을 반환합니다.

  • <search expression>이 배열에 없는 경우, 또는

  • <start><end>보다 큰 숫자인 경우 또는

  • <start>가 배열의 길이보다 큰 숫자인 경우.

예제
결과
{ $indexOfArray: [ [ "a", "abc" ], "a" ] }
0
{ $indexOfArray: [ [ "a", "abc", "de", ["de"] ], ["de"] ] }
3
{ $indexOfArray: [ [ 1, 2 ], 5 ] }
-1
{ $indexOfArray: [ [ 1, 2, 3 ], [1, 2] ] }
-1
{ $indexOfArray: [ [ 10, 9, 9, 8, 9 ], 9, 3 ] }
4
{ $indexOfArray: [ [ "a", "abc", "b" ], "b", 0, 1 ] }
-1
{ $indexOfArray: [ [ "a", "abc", "b" ], "b", 1, 0 ] }
-1
{ $indexOfArray: [ [ "a", "abc", "b" ], "b", 20 ] }
-1
{ $indexOfArray: [ [ null, null, null ], null ] }
0
{ $indexOfArray: [ null, "foo" ] }
null
{ $indexOfArray: [ "foo", "foo" ] }
오류

이 예제에서는 이 inventory collection을 사용합니다.

db.inventory.insertMany( [
{ _id: 0, items: [ "one", "two", "three" ] },
{ _id: 1, items: [ 1, 2, 3 ] },
{ _id: 2, items: [ 1, 2, 3, 2 ] },
{ _id: 3, items: [ null, null, 2 ] },
{ _id: 4, items: [ 2, null, null, 2 ] },
{ _id: 5, items: null },
{ _id: 6, amount: 3 }
] )

다음 예시에서는 $indexOfArray를 사용하여 items 배열에서 2를 찾습니다.

db.inventory.aggregate( [ {
$project: {
index: { $indexOfArray: [ "$items", 2 ] }
}
} ] )

이 예제에서는 다음을 반환합니다.

  • items 배열에서 값 2 에 대한 첫 번째 배열 인덱스(있는 경우)입니다. 배열 인덱스는 0에서 시작합니다.

  • -1 items 배열에 2이(가) 없는 경우 인덱스에 [-1]을(를) 반환합니다.

  • null items이 배열이 아니거나items가 존재하지 않는 경우에 대한 인덱스.

출력 예시:

[
{ _id: 0, index: -1 },
{ _id: 1, index: 1 },
{ _id: 2, index: 1 },
{ _id: 3, index: 2 },
{ _id: 4, index: 0 },
{ _id: 5, index: null },
{ _id: 6, index: null }
]

다음도 참조하세요.

← in (집계)

이 페이지의 내용