2017-04-11 1 views
-1

색인을 수정해야합니다. 나는 인덱스를 떨어하면동일한 이름의 몽고 색인을 다시 만들 수 없습니다.

{ 
    "v" : 1, 
    "key" : { 
     "expectedDateTime" : 1 
    }, 
    "name" : "expectedDateTime_1", 
    "ns" : "expectation.expectation_data", 
    "expireAfterSeconds" : 43200 
} 

expireAfterSeconds가 부정확하고 432000.

로 변경해야 그것은() 미세

db.expectation_data.dropIndex({"expectedDateTime":1}) 
{ "nIndexesWas" : 4, "ok" : 1 } 

getIndexes을 보였다 인덱스가 존재하지 않음을 보여줍니다. 내가 인덱스를 다시 할 때

그럼 내가() getIndexes을 실행에 지금이 오류를

db.expectation_data.createIndex({"expectedDateTime":1}, 
{expireAfterSeconds:432000,name:"expectedDateTime"}); 
{ 
    "ok" : 0, 
    "errmsg" : "Index with name: expectedDateTime already exists with different options", 
    "code" : 85 
} 

을 얻을, 나는 인덱스는 기존의 TTL과 함께 다시 것 같습니다 것을 알 수있다. 이 프로세스를 여러 번 반복했지만 동일한 문제가 반복해서 발생했습니다.

같은 이름의 색인을 다시 만들 수 없다는 문서를 찾을 수 없습니다. 내가 다른 이름을 사용하는 경우 동일한 이름으로 인덱스를 다시 작성에 어떤 제한이

db.expectation_data.createIndex({"expectedDateTime":1}, {expireAfterSeconds:432000}); 
. 
. 
>db.expectation_data.getIndexes() 
. 
. 
{ 
    "v" : 1, 
    "key" : { 
     "expectedDateTime" : 1 
    }, 
    "name" : "expectedDateTime_1", 
    "ns" : "expectation.expectation_data", 
    "expireAfterSeconds" : 432000 
} 

거기에 잘 작동?

+1

인덱스가 자동으로 다시 생성되는 것처럼 보입니다. (실행중인 백그라운드 프로세스 또는 MInstructor를 프로그래밍 방식으로 호출하는 MongoDB에 연결하는 클라이언트 일 수도 있습니다.) – Matt

+0

@Matt - 예상대로. 나는 그걸 알아 냈고 몇 분 전에 대답을 올렸습니다. –

+0

원한다면 대답으로 게시하고 받아 들일 것입니다 :) –

답변

0

을 예상대로

, 내가 인덱스를 만들 수 있었다. ensureIndex 또는 @Index을 사용하는 응용 프로그램이 없음 - 주석이 데이터베이스에 연결되어 있는지 확인하십시오.

-1

밝혀졌습니다. 이는 이전 타임 아웃이있는 엔티티에서 사용 된 @Index 어노테이션 때문이었습니다. 색인을 변경하면 응용 프로그램이 계속 실행 중입니다. 내가 응용 프로그램을 중지 할 때 내가 원래

인덱스가 삭제 후 자동으로 다시처럼이 보이는
관련 문제