>백엔드 개발 >Golang >mgo의 FindId() 메서드를 사용하여 ID별로 MongoDB 문서를 효율적으로 검색하는 방법은 무엇입니까?

mgo의 FindId() 메서드를 사용하여 ID별로 MongoDB 문서를 효율적으로 검색하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-10 08:02:10996검색

How to Efficiently Retrieve MongoDB Documents by ID Using mgo's FindId() Method?

Mgo를 사용하여 ID로 데이터에 액세스

Mongo 데이터베이스에서는 "_id" 필드라고 하는 고유 식별자로 특정 문서를 찾는 것이 일반적인 작업입니다. 다음은 Go용 인기 MongoDB 드라이버인 mgo를 사용하여 이를 수행하는 방법에 대한 포괄적인 가이드입니다.

mgo의 FindId() 메서드 이해

FindId() 메서드는 "_id" 필드에 있습니다. bson.ObjectId 유형의 인수 또는 ObjectId를 나타내는 문자열을 사용합니다. 그러나 FindId() 메서드를 사용할 때는 전체 bson.M{} 맵이 아닌 ObjectId 값만 인수로 제공해야 한다는 점에 유의하는 것이 중요합니다.

FindId() 및 Find의 올바른 사용법 ()

코드에서 문제는 FindId() 메서드를 잘못 사용하는 데 있습니다. 작동해야 하는 수정된 코드는 다음과 같습니다.

err2 := c.FindId(bson.ObjectIdHex("58593d1d6aace357b32bb3a1")).One(&data)

또는 bson.M{} 맵에서 "_id" 필드 및 값을 지정하는 것과 함께 Find() 메서드를 사용할 수 있습니다.

err2 := c.Find(bson.M{"_id": bson.ObjectIdHex("58593d1d6aace357b32bb3a1")}).
    One(&data)

데이터 검색 확인

문서가 발견되면 실행 중에 오류가 발생하지 않습니다. 코드의. 그러나 코드가 여전히 data.IdCookie에 대해 0 값을 반환하는 경우 데이터베이스에 있는 ID의 필드 이름이 구조체에 지정한 것과 다르다는 의미입니다.

구조체 태그 사용 매핑

Go 구조체와 MongoDB 문서 간의 적절한 매핑을 보장하려면 구조체 태그를 사용해야 합니다. 예를 들어 데이터베이스의 "_id" 필드 이름이 "myid"인 경우 다음과 같이 이를 구조체에 매핑할 수 있습니다.

type id_cookie struct {
    IdCookie int `bson:"myid"`
}

연결 처리 최적화

성능을 향상하려면, 각 쿼리에 대해 MongoDB 서버에 대한 다중 연결을 피하는 것을 고려해야 합니다. 단일 세션을 설정하고 이를 여러 쿼리에 재사용하면 작업 속도가 크게 향상될 수 있습니다. 연결 처리 최적화에 대한 자세한 내용은 다음을 참조하세요. [mgo - 쿼리 성능이 지속적으로 느린 것 같습니다(500-650ms)](https://github.com/mongodb/mongo-go-driver/issues/1028)

위 내용은 mgo의 FindId() 메서드를 사용하여 ID별로 MongoDB 문서를 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.