>  기사  >  백엔드 개발  >  고유 인덱스가 있음에도 불구하고 MongoDB에서 여전히 중복 문서가 표시되는 이유는 무엇입니까?

고유 인덱스가 있음에도 불구하고 MongoDB에서 여전히 중복 문서가 표시되는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-02 11:07:02897검색

Why Am I Still Seeing Duplicate Documents in MongoDB Despite Having a Unique Index?

고유 키에도 불구하고 MongoDB 중복 문서

MongoDB에서 컬렉션을 생성하고 createIndex({"uid":1 , "sid": 1)를 사용하여 고유 인덱스를 추가하는 경우 },{unique:true,dropDups: true}), 고유 키 제약 조건에도 불구하고 중복 문서가 계속 삽입되는 것처럼 보일 수 있습니다.

MongoDB 쉘 해상도

인덱스 생성을 검토한 결과, "중복 키 오류"를 나타내는 오류 메시지가 나타날 수 있습니다. MongoDB 3.0.0에는 중복이 있을 때 인덱스가 생성되지 않는 버그가 있었기 때문이다.

이 문제를 해결하려면 먼저 집계 쿼리와 $match 연산자를 사용하여 중복 레코드를 제거하세요.

중복 레코드가 제거되면 오류 없이 고유 인덱스를 생성할 수 있습니다.

PHP 솔루션

아직 존재하지 않는 문서를 삽입하거나 기존 문서를 업데이트하려면 upsert 옵션을 true로 설정한 update() 메서드를 사용하세요.

문서가 없으면 삽입하고, 그렇지 않으면 $set 배열에 지정된 필드를 설정하여 문서를 업데이트합니다.

추가 고려 사항

  • 에서 사용되는 dropDups 옵션 MongoDB 3.0.0에서는 더 이상 초기 인덱스 생성을 사용할 수 없습니다.
  • .update() 메서드 구문에는 "query", "update" 및 "options"라는 세 가지 인수가 필요합니다.
  • "업데이트" 문서 내의 업데이트 작업은 동일한 경로에 두 번 이상 액세스하면 안 됩니다.

위 내용은 고유 인덱스가 있음에도 불구하고 MongoDB에서 여전히 중복 문서가 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.