>백엔드 개발 >Golang >`mgo.FindId`가 내 MongoDB 문서를 찾지 못하는 이유는 무엇입니까?

`mgo.FindId`가 내 MongoDB 문서를 찾지 못하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-07 18:42:15172검색

Why Doesn't `mgo.FindId` Find My MongoDB Document?

mgo를 사용하여 ID로 문서 찾기

질문:

아래 코드 예에서 , MongoDB 컬렉션에 존재하는 것으로 알려진 레코드는 FindId 메서드를 사용하여 찾을 수 없습니다. 대신 코드는 0 값을 반환합니다. 문제는 무엇입니까?

type id_cookie struct {
    IdCookie int
}

func get_id_mongo() int {
    session, err := mgo.Dial("127.0.0.1")
    if err != nil {
        panic(err)
    }
    defer session.Close()

    c := session.DB("id_bag").C("id_cookie")
    data := id_cookie{}
    err2 := c.FindId(bson.ObjectIdHex("58593d1d6aace357b32bb3a1")).One(&data)
    if (err2 != nil){
        Info.Println("error")
        Info.Println(err2)
    }
    Info.Println(data)
    return data.IdCookie
}

답변:

문제는 FindId의 메서드 서명에 있습니다. ID만 인수로 사용하는 반면 Find에는 필드 이름도 지정된 맵이 필요합니다. 이 문제를 해결하려면 다음 코드를 사용하세요.

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

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

오류가 발생하지 않으면 문서를 성공적으로 찾은 것입니다. IdCookie 필드가 여전히 0인 경우 MongoDB에 다른 이름으로 저장될 수 있습니다. 구조체 태그를 사용하여 올바르게 매핑하세요.

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

또한 각 쿼리에 대해 새 연결을 생성하는 대신 MongoDB에 대한 단일 연결을 설정하고 이를 재사용하는 것이 좋습니다. 쿼리 성능 최적화에 대한 자세한 내용은 링크된 토론을 참조하세요.

위 내용은 `mgo.FindId`가 내 MongoDB 문서를 찾지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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