MongoDB에서 중복 항목을 피하기 위해 createIndex()를 사용할 수 있습니다. 구문은 다음과 같습니다 -
db.yourCollectionName.createIndex({"yourFieldName":1},{unique:true});
위의 구문을 구현해 보겠습니다. MongoDB에서 중복 항목을 피하기 위한 쿼리는 다음과 같습니다 -
> db.avoidDuplicateEntriesDemo.createIndex({"UserName":1},{unique:true});{ "createdCollectionAutomatically" :true, "numIndexesBefore" :1, "numIndexesAfter" :2, "ok" :1}
이제 위 컬렉션에 일부 레코드를 삽입합니다. 레코드를 삽입하는 쿼리는 다음과 같습니다 -
> db.avoidDuplicateEntriesDemo.insertOne({"UserName":"John"});{ "승인된":true, "insertedId":ObjectId("5c90e1824afe5c1d2279d697")}
다음은 동일한 레코드를 다시 한 번 삽입하려고 할 때마다 발생하는 오류입니다. -
> db.avoidDuplicateEntriesDemo.insertOne({"UserName":"John"});2019-03-19T18:03:08.465+0530 E QUERY [js] WriteError:E11000 중복 키 오류 수집:test.avoidDuplicateEntriesDemo 인덱스:UserName_1 dup key:{ :"John" } :WriteError({ "index" :0, "code" :11000, "errmsg" :"E11000 중복 키 오류 수집:test.avoidDuplicateEntriesDemo 인덱스:UserName_1 dup key:{ :\" John\" }", "op" :{ "_id" :ObjectId("5c90e1844afe5c1d2279d698"), "UserName" :"John" }})WriteError@src/mongo/shell/bulk_api.js:461:48Bulk/mergeBatchResults@ src/mongo/shell/bulk_api.js:841:49Bulk/executeBatch@src/mongo/shell/bulk_api.js:906:13Bulk/this.execute@src/mongo/shell/bulk_api.js:1150:21DBCollection.prototype. insertOne@src/mongo/shell/crud_api.js:252:9@(shell):1:1
다른 레코드를 삽입해 보겠습니다. 쿼리는 다음과 같습니다 -
> db.avoidDuplicateEntriesDemo.insertOne({"UserName":"Carol"});{ "승인된":true, "insertedId":ObjectId("5c90e18d4afe5c1d2279d699")}
find() 메서드를 사용하여 컬렉션의 모든 문서를 표시합니다. 쿼리는 다음과 같습니다 -
> db.avoidDuplicateEntriesDemo.find();
다음은 출력입니다 -
{ "_id":ObjectId("5c90e1824afe5c1d2279d697"), "UserName":"John" }{ "_id":ObjectId("5c90e18d4afe5c1d2279d699"), "UserName":"캐롤" }