AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

$sort (업데이트 연산자)

참고

명확화

다음 페이지에서는 업데이트 수정자 를 $sort 참조합니다. 집계 단계에 대해서는 를 $sort 참조하세요.

$sort

$sort 수정자는 작업 중에 배열 의 요소를 정렬합니다.$push

수정자를 $sort 사용하려면 수정자와 함께 $each 표시되어야 합니다. 빈 배열 을 [] $each 수정자에 $sort 전달하여 수정자만 효과를 갖도록 할 수 있습니다.

{
$push: {
<field>: {
$each: [ <value1>, <value2>, ... ],
$sort: <sort specification>
}
}
}

<sort specification>의 경우:

  • 문서가 아닌 배열 요소를 정렬하거나 배열 요소가 문서인 경우 전체 문서를 기준으로 정렬하려면 오름차순에는 1을, 내림차순에는 -1을 지정합니다.

  • 배열 요소가 문서인 경우 문서의 필드를 기준으로 정렬하려면 필드와 방향(예: { field: 1 } 또는 { field: -1 })이 있는 정렬 문서를 지정합니다. 정렬 사양에서 포함하는 배열 필드를 참고 하지 마세요.(예: { "arrayField.field": 1 }은 올바르지 않습니다)

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

수정자는 문서가 아닌 배열 요소를 $sort $sort 정렬할 수 있습니다. 이전 버전에서는 수정자를 사용하려면 배열 요소가 문서여야 했습니다.

배열 요소가 문서인 경우 수정자는 전체 문서 또는 문서의 특정 필드 기준으로 정렬할 수 있습니다. 이전 버전에서는 수정자가 문서의 특정 필드 로만 정렬할 수 $sort 있었습니다.

$each수정자 없이$sort수정자를 사용하려고 하면 오류가 발생합니다. $sort에는 더 이상$slice수정자가 필요하지 않습니다. $push에 사용할 수 있는 수정자 목록은 수정자를 참조하세요.

students 컬렉션을 생성합니다.

db.students.insertOne(
{
"_id": 1,
"quizzes": [
{ "id" : 1, "score" : 6 },
{ "id" : 2, "score" : 9 }
]
}
)

다음 업데이트는 추가 문서를 quizzes 배열에 추가한 다음 score 필드의 오름차순으로 배열의 모든 요소를 정렬합니다.

db.students.updateOne(
{ _id: 1 },
{
$push: {
quizzes: {
$each: [ { id: 3, score: 8 }, { id: 4, score: 7 }, { id: 5, score: 6 } ],
$sort: { score: 1 }
}
}
}
)

중요

정렬 문서는 문서의 필드를 직접 참고하고 포함하는 배열 필드 quizzes를 참조하지 않습니다. 즉, { "quizzes.score": 1}가 아닌 { score: 1 }을 사용합니다.

업데이트 후 배열 요소는 score 필드의 오름차순으로 정렬됩니다.

{
"_id" : 1,
"quizzes" : [
{ "id" : 1, "score" : 6 },
{ "id" : 5, "score" : 6 },
{ "id" : 4, "score" : 7 },
{ "id" : 3, "score" : 8 },
{ "id" : 2, "score" : 9 }
]
}

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

db.students.insertOne( { "_id" : 2, "tests" : [ 89, 70, 89, 50 ] } )

다음 작업은 tests 배열에 두 개의 요소를 더 추가하고 요소를 정렬합니다.

db.students.updateOne(
{ _id: 2 },
{ $push: { tests: { $each: [ 40, 60 ], $sort: 1 } } }
)

업데이트된 문서에는 tests 배열의 요소가 오름차순으로 나열되어 있습니다.

{ "_id" : 2, "tests" : [ 40, 50, 60, 70, 89, 89 ] }

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

db.students.insertOne( { "_id" : 3, "tests" : [ 89, 70, 100, 20 ] } )

요소를 내림차순으로 정렬하도록 tests 필드를 업데이트하려면 { $sort: -1 } 지정하고 $each 수정자에 대해 빈 배열 [] 을 지정합니다. 예시:

db.students.updateOne(
{ _id: 3 },
{ $push: { tests: { $each: [ ], $sort: -1 } } }
)

이 예에서는 tests 필드 값을 내림차순으로 정렬합니다.

{ "_id" : 3, "tests" : [ 100, 89, 70, 20 ] }

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

db.students.insertOne(
{
"_id" : 5,
"quizzes" : [
{ "wk": 1, "score" : 10 },
{ "wk": 2, "score" : 8 },
{ "wk": 3, "score" : 5 },
{ "wk": 4, "score" : 6 }
]
}
)

다음 $push 작업에서는 다음을 사용합니다.

  • quizzes 배열에 여러 문서를 추가하는 $each 수정자,

  • 필드 기준으로 수정된 배열 의 모든 $sort 요소를 quizzes score 내림차순으로 정렬하는 수정자입니다.

  • quizzes배열의 처음 3개의 정렬된 요소만 유지하기 위해 사용하는 $slice 수정자.

db.students.updateOne(
{ _id: 5 },
{
$push: {
quizzes: {
$each: [ { wk: 5, score: 8 }, { wk: 6, score: 7 }, { wk: 7, score: 6 } ],
$sort: { score: -1 },
$slice: 3
}
}
}
)

작업 후에는 가장 높은 점수를 받은 세 개의 퀴즈만 배열에 표시됩니다:

{
"_id" : 5,
"quizzes" : [
{ "wk" : 1, "score" : 10 },
{ "wk" : 2, "score" : 8 },
{ "wk" : 5, "score" : 8 }
]
}

쿼리의 수정자 순서는 수정자가 적용되는 순서를 변경하지 않습니다. 자세한 내용은 수정자를 참조하세요.

스킬 배지 획득

무료로 '데이터 변환의 기초'를 마스터하세요!

자세한 내용을 알아보세요.

이 페이지 평가하기

이 페이지의 내용