Docs Menu
Docs Home
/ / /
Go Driver

新機能

項目一覧

  • 2.0の新機能
  • 1.17の新機能
  • 1.16の新機能
  • 1.15.1の新機能
  • 1.15の新機能
  • 1.14の新機能
  • 1.13の新機能
  • 1.12.1の新機能
  • 1.12の新機能

Tip

リリースノート

バージョン間の変更とアップデートの詳細については、 ドライバーソースコードで公開された リリースノート をお読みください。

次の新機能をご覧ください。

2.0 Goドライバーのリリースは、 OpenID Connect(OIDC)認証をサポートし、よりスムーズなクライアント側の操作タイムアウト(CST)エクスペリエンスを提供し、API の効率化、エラー説明の改善、ドライバーパッケージ構造の簡素化により、より明確で慣用的なGoコードを実装します。

これらの変更の詳細については、このセクションを参照するか、GitHub のGoドライバーソースコードで v 2.0移行ガイドを表示してください。

重要

重大な変更

Go Driver v2.0 のリリースでは、次の重大な変更が導入されています。

  • mongo.Connect() は、Context パラメータを受け入れません。このメソッドは オプションオブジェクトのみを受け入れます。このメソッドを使用する例については、接続ガイドの「 接続サンプル コード」を参照してください。

  • Cursor.SetMaxTime() メソッドの名前が Cursor.SetMaxAwaitTime() に変更されます。このメソッドは、追尾可能 (tailable) カーソルを使用して、 Cappedコレクションから取得された新しいドキュメントをサーバーが待機する最大時間を指定します。

  • 操作固有のタイムアウト オプションを排除します。次のフィールドと setter メソッドはドライバーから削除されました。

    • AggregateOptions.MaxTime, AggregateOptions.SetMaxTime()

    • ClientOptions.SocketTimeout, ClientOptions.SetSocketTimeout()

    • CountOptions.MaxTime, CountOptions.SetMaxTime()

    • DistinctOptions.MaxTime, DistinctOptions.SetMaxTime()

    • EstimatedDocumentCountOptions.MaxTime, EstimatedDocumentCountOptions.SetMaxTime()

    • FindOptions.MaxTime, FindOptions.SetMaxTime()

    • FindOneOptions.MaxTime, FindOneOptions.SetMaxTime()

    • FindOneAndReplaceOptions.MaxTime, FindOneAndReplaceOptions.SetMaxTime()

    • FindOneAndUpdateOptions.MaxTime, FindOneAndUpdateOptions.SetMaxTime()

    • GridFSFindOptions.MaxTime, GridFSFindOptions.SetMaxTime()

    • CreateIndexesOptions.MaxTime, CreateIndexesOptions.SetMaxTime()

    • DropIndexesOptions.MaxTime, DropIndexesOptions.SetMaxTime()

    • ListIndexesOptions.MaxTime, ListIndexesOptions.SetMaxTime()

    • SessionOptions.DefaultMaxCommitTime, SessionOptions.SetDefaultMaxCommitTime()

    • TransactionOptions.MaxCommitTime, TransactionOptions.SetMaxCommitTime()

    • WriteConcern.WTimeout

    代わりに、クライアントまたはコンテキスト内でタイムアウトを設定できます。詳細については、「 接続オプションガイド 」の「 シングル タイムアウト設定 」セクションを参照してください。

このリリースには、次の改善点と修正が含まれています。

  • OpenID Connect(OIDC)認証のサポート。詳細については、 エンタープライズ認証メカニズムガイドの「 MONGODB-OIDC 」セクションを参照してください。

  • GridFS APIにはmongo パッケージからアクセスできます。以前のバージョンでは、別の パッケージからGridFS関数にアクセスできましたが、この機能はメインのドライバーgridfs mongoパッケージから統合されました。詳細については、 GridFSガイド を参照してください。

  • すべてのオプション構造体の Commentフィールドは、string 型ではなく any 型の値を取ります。このフィールドを設定するには、SetComment() メソッドを使用して any 型のパラメータを渡します。

  • モニタリングイベントドキュメントの更新:

    • CommandStartedEvent 構造体と CommandFinishedEvent 構造体には、接続ID を取得するための int64 タイプの単一の ServerConnectionIDフィールドがあります。

    • PoolEvent 構造体の ConnectionIDフィールドは、uint64 ではなく int64 型の値を取ります。

    サンプルイベントドキュメントを表示するには、 モニタリング ガイド を参照してください。

  • Sessionインターフェースは 構造体に変換されます。詳細については、「 トランザクション 」ガイドを参照してください。

  • Distinct()メソッドは、指定された型にデコードできる構造体を返します。詳細については、「 個別の値の取得 」ガイドを参照してください。

  • IndexView.DropOne()メソッドは、存在する場合はエラーのみを返します。以前のバージョンでは、このメソッドは削除されたインデックスの数を含むサーバー応答も返していました。詳細については、「 インデックスガイドの「 インデックスの削除 」セクションを参照してください。

  • パッケージ内の 型のビルダ パターンをアップデートします。パターンはセッター関数のスライスを保持するため、 オプションオブジェクトにデータを直接設定することはできません。この更新では、オプションの作成方法と使用方法は通常変更されません。詳しくは、options 機能の JIRAチケットを参照してください。

  • ドライバーは、書込み操作が確認されない場合、mongo.ErrUnacknowledgedWrite 送信エラーをサポートしなくなりました。サーバーが書込み (write)操作を確認したことを確認するには、書込み (write) メソッドによって返される結果構造体から Acknowledgedプロパティにアクセスする必要があります。

    次の例は、挿入操作の確認応答を確認する方法を示しています。

    res, err := coll.InsertOne(context.TODO(), bson.D{{"x", 2}})
    if err != nil {
    panic(err)
    }
    fmt.Print(res.Acknowledged)
  • TransactionOptionsインスタンスを作成し、そのインスタンスをSetDefaultTransactionOptions() タイプのSessionOptions メソッドに渡すことで、特定のセッションで実行されるトランザクションのオプションを設定できます。詳細については、 トランザクションガイドの「 セッションとトランザクション オプション 」セクションを参照してください。

  • Collection.Clone() メソッドはエラーを返しません。

  • canonicalメソッドのUnmarshalExtJSON() パラメータの名前をcanonicalOnly に変更します。canonicalOnly trueを に設定すると、拡張JSONが標準モードでマーシャリングされていない場合、 メソッドはエラーを返します。false に設定すると、メソッドは標準または緩和されたJSONのマーシャリングをアンマーシャリングできます。詳細については、 「UnmartsJSON() APIドキュメント」 を参照してください。

重要

v 1.17は、予定されている最終的な1 .x バージョン リリースです。 このバージョンではセキュリティとバグが修正されますが、将来の開発と機能はドライバーの2 .x バージョンにのみ含まれます。

1.17 Go ドライバーのリリースには、次の改善点と修正が含まれています。

  • OpenID Connect(OIDC)認証のサポートを追加しました。 詳細については、 エンタープライズ認証メカニズム の「 MONGODB-OIDC 」セクションを参照してください。

  • Queryable Encryption(QE)範囲クエリのサポートを追加します。 この機能を使用するには、アプリを MongoDB Server 8.0以降に接続する必要があります。 QEQueryable Encryption 範囲クエリの詳細については、MongoDB Server マニュアルの「 」を参照してください。

  • クライアントの一括書き込み機能を除く MongoDB Server 8.0のサポートを追加します。

  • IndexViewメソッドと メソッドを含むようにDropOneWithKey() DropWithKey()タイプを拡張し、名前の代わりにキー仕様を使用してインデックスを削除できるようにします。

このバージョンの変更の詳細については、 v1.17 リリースノート を参照してくださいGithub .

1.16 Go ドライバーのリリースには、次の改善点と修正が含まれています。

これらの変更の詳細については、 v1.16 リリースノート を参照してください Github で。

1.15.1 Go ドライバーのパッチ リリースには、次の改善と修正が含まれています。

  • レプリカセット クラスターから切断するとrttMonitor接続が残る可能性のある接続リークを修正します。

  • クライアント全体のタイムアウトと操作タイムアウトが設定されている場合に、読み取りおよび集計操作にmaxTimeMS値を手動で指定するためのサポートを追加します。

  • 変更ストリームで呼び出しできるRemainingBatchLength()メソッドを追加します。

これらの変更の詳細については、 v1.15.1 リリースノート を参照してください Github で。

1.15 Go ドライバーのリリースには、次の改善点と修正が含まれています。

  • 接続チャーンは、timeoutMS 接続オプションを指定するか、 SetTimeout() を呼び出すことで、クライアント全体のタイムアウトを設定することで軽減できます。 関数を使用します。タイムアウトが設定されている場合、ドライバーは操作がタイムアウトした後に接続の再利用を試み、最大 1 秒間待機して接続が再利用できるかどうかを確認してから、接続を閉じます。

  • 接続プール イベントには、チェックアウト期間と接続を確立するための合計時間数を測定するためのDurationフィールドが含まれています。

1.14 Go ドライバーのリリースには、次の改善点と修正が含まれています。

  • 1.18より前の Go バージョンはサポートされなくなりました。

  • ハートビート タイムアウトが発生した場合、進行中の操作は先行してキャンセルされます。

  • "mongodb+srv://"プレフィックスを含む接続文字列では、SRV ホスト名に大文字を含めることができます。

1.13 Go ドライバーのリリースには、次の改善点と修正が含まれています。

  • サーバー選択と SDAM のログ。 ロギングについて詳しくは、「 ログ記録 」のドキュメントを参照してください。

  • 検索インデックスをプログラムで管理できるCollection型のメソッド。

  • event.CommandStartedEventイベントとevent.CommandFinishedEventイベントはDatabaseNameフィールドを返します。 このフィールドは、 コマンド ログ アナライザにも含まれます。

  • シャーディングされたトポロジーでは、失敗したクエリを再試行するためにサーバーを選択するときに、ドライバーは最初の試行に使用されたサーバーを除外します。 代わりに、適格なmongosインスタンスが複数ある場合、ドライバーはランダムに 1 つを選択します。 正常でない インスタンスは、自動的に選択対象から除外されます。

  • ストリーミング SDAM は、 Amazon Web Services Lambdaおよび同様のFaaS(function-as-a-service)プラットフォームではデフォルトで無効になっています。 serverMonitoringMode URI オプションを使用してモニタリングを有効にできます。

1.12 Go ドライバーのリリースには、次の改善点と修正が含まれています。

  • ドライバーはセッションを終了するときに接続の固定を解除します。 これにより、ユーザーがロード バランサーに接続しているときにトランザクションを実行するときに接続がリークされるのを防ぎます。

  • 無効な型で空のbson.RawValue型をアンマーシャリングしたり、 ReadConcernインスタンスのnilポインターをマーシャリングしたりしても、ドライバーはランタイム エラーをスローしません。

  • ログ コンポーネントとしてoptions.LogComponentAllを正しく設定すると、すべてのコンポーネントに対するログが公開されます。

重要

非推奨に関する通知

  • mongo.NewClient()メソッドとclient.Connect()メソッドは非推奨です。 mongo.Connect()メソッドを使用すると、クライアントを作成し、1 回の呼び出しで接続できます。

1.12の新機能 Go ドライバーのリリースには、次のものが含まれます。

このドライバー バージョンは、 Queryable Encryption (QE)のサポートを追加します。 QE 機能を使用するための要件の詳細については、「 Queryable Encryption ドライバーの互換性テーブル 」を参照してください。

ClientEncryption.CreateEncryptedCollection()メソッドは、新しい暗号化コレクションを作成すると、データ暗号化キーを自動的に作成します。 QE 機能の使用方法については、サーバー マニュアルの「クイック スタート」を参照してください。

LogSinkロギング インターフェースを使用して、接続マネジメントとコマンド実行イベントを記録できるようになりました。

詳しくは、「ログの基礎 」ガイドを参照してください。

このドライバー バージョンは、ドライバーが BSON をマーシャリングおよびアンマーシャリングする方法を指定する機能をoptionsパッケージに追加します。

次の例は、 Clientで BSON オプションを設定する方法を示しています。 オプションは、次の動作を指定します。

  • bson構造体タグが存在しない場合、ドライバーはjson構造体タグにフォールバックします。

  • ドライバーはnil Go マップ型を空の BSON ドキュメントとしてマーシャリングします。

  • ドライバーはnil Go スライス タイプを空の BSON 配列としてマーシャリングします。

bsonOpts := &options.BSONOptions{
UseJSONStructTags: true,
NilMapAsEmpty: true,
NilSliceAsEmpty: true,
}
options.Client().SetBSONOptions(bsonOpts)

BSONOptions型を指定して実装する方法の完全な例については、 API ドキュメントを参照してください。

このドライバー バージョンにより、 WriteConcern API が簡素化されます。 変更の詳細については、「 書込み保証 ( write concern) 」を参照してください。

  • EKS のAmazon Web Services IAM ロールによる認証をサポートします。

  • カーソルの反復処理時に取得されるバッチのサイズを指定できるようにするためのCursor.SetBatchSize()メソッドの追加。

  • MarshalValue()メソッドでマーシャリングされた BSON 値のマーシャリングを可能にするためのUnmarshalValue()メソッドの追加。

戻る

クイック リファレンス