질문: _id로 데이터를 찾고 싶습니다. 나는 이 데이터가 존재하고 이 _id가 존재한다는 것을 알고 있습니다(pymongo로 테스트했습니다). 그러나 아래 코드에서는 찾지 못합니다.
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() // Optional. Switch the session to a monotonic behavior. session.SetMode(mgo.Monotonic, true) c := session.DB("id_bag").C("id_cookie") data := id_cookie{} err2 := c.FindId(bson.M{"_id": bson.ObjectIdHex("58593d1d6aace357b32bb3a1")}).One(&data) if (err2 != nil){ Info.Println("error") Info.Println(err2) } Info.Println(data) return data.IdCookie }
답변: Collection.FindId() 또는 Collection.Find()를 사용하여 ID로 찾는 방법에는 두 가지가 있습니다.
Collection.FindId() 사용: ID만 전달 value.
err2 := c.FindId(bson.ObjectIdHex("58593d1d6aace357b32bb3a1")).One(&data)
Collection.Find() 사용: 필드 이름으로 값을 지정합니다.
err2 := c.Find(bson.M{"_id": bson.ObjectIdHex("58593d1d6aace357b32bb3a1")}). One(&data)
여전히 값이 0인 경우 id_cookie.IdCookie는 이 ID를 보유한 문서의 필드 이름이 다르다는 의미입니다. 구조체 태그를 사용하여 적절하게 매핑하세요.
type id_cookie struct { IdCookie int `bson:"myid"` }
성능 문제를 방지하려면 MongoDB 서버에 한 번 연결하고 세션을 재사용하세요. 자세한 내용은 다음 스레드를 참조하세요: [mgo - 쿼리 성능이 지속적으로 느린 것 같습니다(500-650ms)](https://groups.google.com/forum/#!topic/golang-nuts/8_EH7KO_S4Y).
위 내용은 _id가 존재하는데도 mgo를 사용하는 Go 코드가 _id로 MongoDB 문서를 찾는 데 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!