ホームページ  >  記事  >  バックエンド開発  >  Mongodbの一意のペアインデックスを作成するにはどうすればよいですか?

Mongodbの一意のペアインデックスを作成するにはどうすればよいですか?

PHPz
PHPz転載
2024-02-10 17:00:101073ブラウズ

Mongodbの一意のペアインデックスを作成するにはどうすればよいですか?

php エディタ Xigua が、Mongodb 用の一意のペアインデックスを作成する方法を紹介します。 Mongodb は非リレーショナル データベースであり、ペア インデックスはコレクション内のドキュメント ペアの一意性を保証するために使用される特別なインデックス タイプです。一意のペア インデックスを作成するには、Mongodb の createIndex メソッドを使用し、インデックスのフィールドと一意性オプションを指定する必要があります。インデックスを正しく設定すると、重複データの挿入を効果的に回避し、データの一貫性と精度を向上させることができます。それでは具体的な手順を見ていきましょう!

質問内容

mongodbを使用しており、2つのフィールドでペアを一意にしたいと考えています。

これまでに私がやったことは次のとおりです:

リーリー

しかし、このように 2 つのレコードを挿入すると

リーリー

データベースにはレコードが 1 つだけあります

リーリー

2 番目のものが最初のものを上書きしました

以下はレコードを挿入するためのサンプルコードです

func (repository *translationrepository) createindexes(collection *mongo.collection) error {
    models := []mongo.indexmodel{
        {
            keys:    bson.d{{"object_id", 1}, {"object_type", 1}},
            options: options.index().setunique(true),
        },
        {
            keys:    bson.d{{"expire_at", 1}},
            options: options.index().setexpireafterseconds(0),
        },
    }

    opts := options.createindexes().setmaxtime(10 * time.second)
    _, err := collection.indexes().createmany(context.background(), models, opts)
    return err
}

解決策

私があなたのシナリオを管理する必要があります。私が何を達成したかを示すための簡単なプログラムを共有しましょう。

リーリー

ここで、すべての主要な手順を説明します:

  1. オブジェクト 構造の定義。これは必要なものの簡略化されたバージョンです。 bson コメントの実際の使用に注意してください。このデモでは、json を省略しても問題ありません。
  2. mongo エコシステムに関連する設定:
    1. コンテキストの作成 (タイムアウトあり)
    2. クライアント設定 (docker 経由で実行されているローカル mongodb インスタンスに接続)
    3. demodb という名前のデータベースと mycollection という名前のコレクションを作成します。また、プログラムを終了するときにこれらを削除する呼び出しを延期します (クリーンアップのためだけです)。
  3. フィールド object_id および object_type に一意の複合インデックスを作成します。 options フィールドに注目してください。このフィールドは、setunique メソッドを使用してインデックスの一意性を宣言します。
  4. ドキュメントを追加します。このプログラムでは、同じフィールドを持つ 2 つのドキュメントを挿入することはできないことに注意してください。これらのケースをコメント/コメント解除して、再度確認してみてください。
  5. デバッグの目的で、コレクション内のドキュメントをリストし、2 番目のドキュメントが追加されたかどうかを確認することにしました。

このデモがあなたの質問のいくつかに答えることを願っています。教えてください、そしてありがとう!

以上がMongodbの一意のペアインデックスを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。