Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / / /

$position

이 페이지의 내용

  • 정의
  • 행동
  • 예시
$position

$position 수정자는 $push 연산자가 요소를 삽입하는 배열의 위치를 지정합니다. $position 수정자가 없으면 $push 연산자는 배열의 끝에 요소를 삽입합니다. 자세한 내용은 $push 수정자를 참조하세요.

$position 수정자를 사용하려면 $each 수정자와 함께 표시되어야 합니다.

{
$push: {
<field>: {
$each: [ <value1>, <value2>, ... ],
$position: <num>
}
}
}

<num> 는 0 기반의 배열 인덱스(위치)를 기준으로 배열 내 위치를 나타냅니다:

  • 음수가 아닌 숫자는 배열의 시작 부분부터 시작하여 배열의 위치에 해당합니다. <num> 값이 배열 길이보다 크거나 같으면 $position 수정자는 효과가 없으며 $push 배열 끝에 요소를 추가합니다.

  • 음수는 배열의 마지막 요소부터 계산(포함하지 않음)하여 배열의 위치에 해당합니다. 예를 들어 -1 은 배열의 마지막 요소 바로 앞의 위치를 나타냅니다. 3} 배열에 여러 요소를 지정하는 $each 경우 마지막으로 추가된 요소는 끝에서 지정된 위치에 있습니다. <num> 절대값이 배열의 길이보다 크거나 같은 경우 $push 값은 배열의 시작 부분에 요소를 추가합니다.

MongoDB 5.0부터 업데이트 연산자는 문자열 기반 이름이 있는 문서 필드를 사전순으로 처리합니다. 숫자 이름이 있는 필드는 숫자 순서대로 처리됩니다. 자세한 내용은 업데이트 운영자 동작을 참조하십시오.

students 컬렉션을 생성합니다.

db.students.insertOne( { "_id" : 1, "scores" : [ 100 ] } )

다음 작업은 scores 필드를 업데이트하여 50, 60, 70 요소를 배열의 시작 부분에 추가합니다.

db.students.updateOne(
{ _id: 1 },
{
$push: {
scores: {
$each: [ 50, 60, 70 ],
$position: 0
}
}
}
)

이 작업을 수행하면 다음과 같이 업데이트된 문서가 생성됩니다:

{ "_id" : 1, "scores" : [ 50, 60, 70, 100 ] }

0} 컬렉션에 문서를 students 추가합니다:

db.students.insertOne( { "_id" : 2, "scores" : [ 50, 60, 70, 100 ] } )

다음 작업은 scores 필드를 업데이트하여 2 의 배열 인덱스(위치)에 2030 요소를 추가합니다.

db.students.updateOne(
{ _id: 2 },
{
$push: {
scores: {
$each: [ 20, 30 ],
$position: 2
}
}
}
)

이 작업을 수행하면 다음과 같이 업데이트된 문서가 생성됩니다:

{ "_id" : 2, "scores" : [ 50, 60, 20, 30, 70, 100 ] }

$position은 배열의 마지막 요소부터 계산하여 끝부터 시작하는 위치를 나타내는 음수 배열 인덱스(위치) 값을 사용할 수 있습니다(배열의 마지막 요소는 포함하지 않음). 예를 들어 -1은 배열의 마지막 요소 바로 앞의 위치를 나타냅니다.

다음 문서를 students 컬렉션에 추가합니다:

db.students.insertOne(
{ "_id" : 3, "scores" : [ 50, 60, 20, 30, 70, 100 ] }
)

다음 연산에서는 $position-2를 지정하여 마지막 요소 앞 두 자리 위치에 90을 추가하고 마지막 요소 앞 두 자리 위치에 80을 추가합니다.

중요

배열 인덱스 (위치) 가 음수인 경우 $each 배열에 여러 요소를 지정하면 마지막으로 추가한 요소가 끝부터 지정된 위치에 있습니다.

db.students.updateOne(
{ _id: 3 },
{
$push: {
scores: {
$each: [ 90, 80 ],
$position: -2
}
}
}
)

이 작업을 수행하면 다음과 같이 업데이트된 문서가 생성됩니다:

{ "_id" : 3, "scores" : [ 50, 60, 20, 30, 90, 80, 70, 100 ] }

돌아가기

$each

이 페이지의 내용