Mongo 데이터베이스에서는 "_id" 필드라고 하는 고유 식별자로 특정 문서를 찾는 것이 일반적인 작업입니다. 다음은 Go용 인기 MongoDB 드라이버인 mgo를 사용하여 이를 수행하는 방법에 대한 포괄적인 가이드입니다.
FindId() 메서드는 "_id" 필드에 있습니다. bson.ObjectId 유형의 인수 또는 ObjectId를 나타내는 문자열을 사용합니다. 그러나 FindId() 메서드를 사용할 때는 전체 bson.M{} 맵이 아닌 ObjectId 값만 인수로 제공해야 한다는 점에 유의하는 것이 중요합니다.
코드에서 문제는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!