문서 메뉴

문서 홈애플리케이션 개발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
$slice →

이 페이지의 내용