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

결과 정렬

이 가이드에서는 작업 결과의 순서를 지정하는 방법을 배울 수 있습니다.

이 가이드의 예시에서는 courses collection의 문서에 대한 모델로 다음 Course 구조체를 사용합니다.

type Course struct { Title string Enrollment int32}

이 가이드의 예시를 실행하려면 다음 스니펫을 사용하여 샘플 데이터를 db.courses collection에 로드하세요.

coll := client.Database("db").Collection("courses")docs := []interface{}{ Course{Title: "World Fiction", Enrollment: 35}, Course{Title: "Abstract Algebra", Enrollment: 60}, Course{Title: "Modern Poetry", Enrollment: 12}, Course{Title: "Plate Tectonics", Enrollment: 35},} result, err := coll.InsertMany(context.TODO(), docs)

팁

존재하지 않는 데이터베이스 및 collection

쓰기 작업을 수행할 때 필요한 데이터베이스 및 collection이 없는 경우 서버는 이를 암시적으로 생성합니다.

각 문서에는 각 문서의 title 및 enrollment 필드에 해당하는 과정의 제목 및 최대 등록 수를 비롯한 University 과정에 대한 설명이 포함되어 있습니다.

결과의 순서를 지정하려면 정렬 필드와 방향을 지정하는 인터페이스를 작업 옵션의 SetSort() 메서드에 전달합니다.

다음 작업은 옵션을 매개변수로 사용합니다:

  • Find()

  • FindOne()

  • FindOneAndDelete()

  • FindOneAndUpdate()

  • FindOneAndReplace()

  • gridfs.Bucket.Find()

오름차순 또는 내림차순 정렬 방향을 설정할 수 있습니다.

오름차순 정렬은 결과가 가장 작은 순서에서 가장 큰 순서로 정렬됩니다. 오름차순 정렬을 지정하려면 정렬하려는 필드와 1을 SetSort() 메서드에 전달합니다.

팁

오름차순 정렬을 사용하면 메서드가 Boolean 유형 값을 false에서 true로, String 유형 값은 a에서 z로, 숫자 유형 값은 음의 무한대부터 양의 무한대까지 정렬합니다.

다음 예에서는 enrollment 필드에 오름차순 정렬을 지정합니다.

filter := bson.D{}opts := options.Find().SetSort(bson.D{{"enrollment", 1}}) cursor, err := coll.Find(context.TODO(), filter, opts) var results []Courseif err = cursor.All(context.TODO(), &results); err != nil { panic(err)}for _, result := range results { res, _ := bson.MarshalExtJSON(result, false, false) fmt.Println(string(res))}

내림차순 정렬은 결과가 가장 큰 순서에서 가장 작은 순서로 정렬됩니다. 내림차순 정렬을 지정하려면 정렬하려는 필드와 -1을 SetSort() 메서드에 전달합니다.

팁

내림차순 정렬을 사용하면 이 메서드는 Boolean 유형 값은 true에서 false로, String 유형 값은 z에서 a로, 숫자 유형 값은 양수 무한대에서 음수 무한대로 정렬합니다.

다음 예에서는 enrollment 필드에 내림차순 정렬을 지정합니다:

filter := bson.D{}opts := options.Find().SetSort(bson.D{{"enrollment", -1}}) cursor, err := coll.Find(context.TODO(), filter, opts) var results []Courseif err = cursor.All(context.TODO(), &results); err != nil { panic(err)}for _, result := range results { res, _ := bson.MarshalExtJSON(result, false, false) fmt.Println(string(res))}

결과를 정렬하는 데 사용하는 필드에 둘 이상의 문서에 동일한 값이 있는 경우 타이가 발생합니다. MongoDB는 타이가 발생할 경우 순서를 보장하지 않습니다.

예를 들어 샘플 데이터에서는 다음 문서에서 enrollment에 대해 타이가 발생했습니다:

{"title":"World Fiction","enrollment":35}{"title":"Plate Tectonics","enrollment":35}

추가 필드를 정렬하여 원래 정렬의 타이를 해결할 수 있습니다. 문서에 대한 특정 순서를 보장하려면 동률이 발생하지 않는 정렬 필드를 선택합니다.

다음 예에서는 enrollment 필드에 내림차순 정렬을 지정한 다음 title 필드에 오름차순 정렬을 지정합니다.

filter := bson.D{}opts := options.Find().SetSort(bson.D{{"enrollment", -1}, {"title", 1}}) cursor, err := coll.Find(context.TODO(), filter, opts) var results []Courseif err = cursor.All(context.TODO(), &results); err != nil { panic(err)}for _, result := range results { res, _ := bson.MarshalExtJSON(result, false, false) fmt.Println(string(res))}

집계 파이프라인에 정렬을 지정하는 $sort 단계를 포함할 수도 있습니다.

다음 예에서는 enrollment 필드에 내림차순 정렬을 지정한 다음 title 필드에 오름차순 정렬을 지정합니다.

sortStage := bson.D{{"$sort", bson.D{{"enrollment", -1}, {"title", 1}}}} cursor, err := coll.Aggregate(context.TODO(), mongo.Pipeline{sortStage})if err != nil { panic(err)} var results []Courseif err = cursor.All(context.TODO(), &results); err != nil { panic(err)}for _, result := range results { res, _ := bson.MarshalExtJSON(result, false, false) fmt.Println(string(res))}

언급된 작업에 대해 자세히 알아보려면 다음 가이드를 참조하세요.

텍스트 검색에서 텍스트 점수를 정렬하는 방법에 대해 알아보려면 텍스트 검색을 참조하세요.

이 가이드에서 설명하는 메서드나 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.