공식 mongo-go-driver를 사용하여 MongoDB 문서의 프로젝트 필드
MongoDB 문서의 필드 필터링은 선택적 데이터 검색 및 성능 최적화에 중요합니다. . 이를 달성하기 위해 공식 mongo-go-driver는 유연한 옵션을 제공합니다.
문제 설명:
findopt.Projection 메소드를 사용하여 필드를 억제하려고 시도합니다. MongoDB 문서가 실패했습니다. fields 구조체를 사용하여 투영을 지정했음에도 불구하고 필드는 반환된 문서에 그대로 유지됩니다.
해결책:
근본 원인: 투영에 사용된 fields 구조체는 내보내지 않은 필드 이름으로 인해 해당 필드에 액세스합니다.
해결 방법: 구조체의 필드 이름을 내보내고 구조체 태그를 사용하여 매핑합니다. 해당 MongoDB 필드(이 경우 _id)에 추가합니다.
수정된 코드는 다음과 같습니다.
type fields struct { ID int `bson:"_id"` } s := bson.NewDocument() filter := bson.NewDocument(bson.EC.ObjectID("_id", starterId)) projection := fields{ ID: 0, } result := staCon.collection.FindOne( nil, filter, options.FindOne().SetProjection(projection)).Decode(s)
또는 bson.Document를 프로젝션으로 사용할 수 있습니다.
projection := bson.NewDocument( bson.EC.Int32("_id", 0), ) result := staCon.collection.FindOne( nil, filter, options.FindOne().SetProjection(projection)).Decode(s)
이러한 수정 사항을 구현하면 원하는 필드 필터링이 달성되어 _id 필드가 있는 문서가 생성됩니다. 억제되었습니다.
위 내용은 mongo-go-driver를 사용하여 MongoDB 문서의 필드를 효과적으로 투영하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!