Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

MongoDB에서 고유 인덱스를 희소 고유 인덱스로 변경하시겠습니까?

<시간/>

희소 색인의 경우 sparse:true를 사용합니다. . 다음은 인덱스를 생성하는 쿼리입니다 -

> db.demo229.ensureIndex({"ClientName":1}, {unique: true});
{
   "createdCollectionAutomatically" : true,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}

다음은 인덱스를 표시하는 쿼리입니다 -

> db.demo229.getIndexes();

이것은 다음과 같은 출력을 생성합니다 -

[
   {
      "v" : 2,
      "key" : {
         "_id" : 1
      },
      "name" : "_id_",
      "ns" : "test.demo229"
   },
   {
      "v" : 2,
      "unique" : true,
      "key" : {
         "ClientName" : 1
      },
      "name" : "ClientName_1",
      "ns" : "test.demo229"
   }
]

이제 인덱스를 삭제하고 MongoDB에서 고유 인덱스를 희소 고유 인덱스로 변경해 보겠습니다. -

> db.demo229.dropIndex("ClientName_1");
{ "nIndexesWas" : 2, "ok" : 1 }
> db.demo229.ensureIndex({"ClientName":1}, {unique: true, sparse:true});
{
   "createdCollectionAutomatically" : false,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}

다음은 인덱스를 표시하는 쿼리입니다 -

> db.demo229.getIndexes();

이것은 다음과 같은 출력을 생성합니다 -

[
   {
      "v" : 2,
      "key" : {
         "_id" : 1
      },
      "name" : "_id_",
      "ns" : "test.demo229"
   },
   {
      "v" : 2,
      "unique" : true,
      "key" : {
         "ClientName" : 1
      },
      "name" : "ClientName_1",
      "ns" : "test.demo229",
      "sparse" : true
   }
]