>백엔드 개발 >Golang >Mongodb에 대한 고유 쌍 인덱스를 만드는 방법은 무엇입니까?

Mongodb에 대한 고유 쌍 인덱스를 만드는 방법은 무엇입니까?

PHPz
PHPz앞으로
2024-02-10 17:00:101116검색

Mongodb에 대한 고유 쌍 인덱스를 만드는 방법은 무엇입니까?

php 편집기 Xigua에서는 Mongodb용 고유한 쌍 인덱스를 만드는 방법을 소개합니다. Mongodb는 비관계형 데이터베이스이며 쌍 인덱스는 컬렉션에 있는 문서 쌍의 고유성을 보장하는 데 사용되는 특수 인덱스 유형입니다. 고유한 쌍 인덱스를 생성하려면 Mongodb의 createIndex 메소드를 사용하고 인덱스 필드와 고유성 옵션을 지정해야 합니다. 인덱스를 올바르게 설정하면 중복 데이터 삽입을 효과적으로 방지하고 데이터 일관성과 정확성을 향상시킬 수 있습니다. 다음으로 구체적인 단계를 살펴보겠습니다!

질문 내용

mongodb를 사용하고 있는데 2개 필드에서 고유한 쌍을 만들고 싶습니다.

지금까지 내가 한 일은 다음과 같습니다.

으아아아

그런데 이렇게 레코드 2개를 삽입하면

으아아아

데이터베이스에 단 1개의 레코드만

으아아아

두 번째가 첫 번째를 덮었습니다

아래는 레코드 삽입을 위한 샘플 코드입니다

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
}

Solution

귀하의 시나리오를 관리해야 합니다. 제가 성취한 것을 보여주기 위해 간단한 프로그램을 공유하겠습니다.

으아아아

이제 모든 주요 단계를 살펴보겠습니다.

  1. object 结构的定义,这是您需要的简化版本。请注意实际使用的 bson 注释。为了这个演示,您可以安全地省略 json .
  2. 몽고 생태계 관련 설정:
    1. 컨텍스트 생성(시간 초과 포함)
    2. 클라이언트 설정(docker를 통해 실행되는 로컬 mongodb 인스턴스에 연결)
    3. 이름이 demodb 的数据库和名为 mycollection인 컬렉션을 만듭니다. 또한 프로그램을 종료할 때 이를 삭제하라는 호출을 연기합니다(단지 정리를 위해).
  3. 필드 object_idobject_type 上创建唯一复合索引。请注意 options 字段,该字段使用 setunique 방식으로 인덱스의 고유성을 선언합니다.
  4. 문서를 추가하세요. 프로그램에서는 동일한 필드가 있는 두 개의 문서를 삽입하는 것을 허용하지 않습니다. 이러한 사례에 댓글을 달거나 댓글을 취소하여 다시 확인할 수 있습니다.
  5. 디버깅 목적으로 두 번째 문서가 추가되었는지 확인하기 위해 컬렉션의 문서를 나열했습니다.

이 데모가 귀하의 질문에 대한 답변이 되었기를 바랍니다. 알려주시면 감사하겠습니다!

위 내용은 Mongodb에 대한 고유 쌍 인덱스를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제