ホームページ > バックエンド開発 > Golang > _id が存在するにもかかわらず、mgo を使用する Go コードが _id による MongoDB ドキュメントの検索に失敗するのはなぜですか?

_id が存在するにもかかわらず、mgo を使用する Go コードが _id による MongoDB ドキュメントの検索に失敗するのはなぜですか?

Barbara Streisand
リリース: 2024-12-30 22:12:15
オリジナル
375 人が閲覧しました

Why is my Go code using mgo failing to find a MongoDB document by its _id, even though the _id exists?

mgo で id で検索

質問: _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 で検索するには 2 つの方法があります。

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 ~ 650 ミリ秒)](https://groups.google.com/forum/#!topic/golang-nuts/8_EH7KO_S4Y)。

以上が_id が存在するにもかかわらず、mgo を使用する Go コードが _id による MongoDB ドキュメントの検索に失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート